Allan
Allan

Reputation: 41

How to cut everything to first occurence of letter N

How to cut everything, what is before N_NNN:

SPA-8   N_NNN4_1.2.3.4.zzzzzzz_bbb.nnn2

Between SPA-8 and N_NNN4_1.2.3.4.zzzzzzz_bbb.nnn2 there are 3 whitespaces

As output I would like to get:

N_NNN4_1.2.3.4.zzzzzzz_bbb.nnn2

Upvotes: 1

Views: 47

Answers (4)

anubhava
anubhava

Reputation: 785058

Here is a pure BASH way of achieving this task:

s='SPA-8   N_NNN4_1.2.3.4.zzzzzzz_bbb.nnn2'
[[ "$s" =~ (N_NNN.*$) ]] && echo "${BASH_REMATCH[1]}"
N_NNN4_1.2.3.4.zzzzzzz_bbb.nnn2

Upvotes: 0

Kent
Kent

Reputation: 195039

give this sed one-liner a try

sed 's/[^N]*//'

Upvotes: 4

martin
martin

Reputation: 3239

You can do

awk -F"N_NNN" '{print FS$2 }' 

which gives

awk -F"N_NNN" '{print FS$2 }' <<< "SPA-8   N_NNN4_1.2.3.4.zzzzzzz_bbb.nnn2"
# N_NNN4_1.2.3.4.zzzzzzz_bbb.nnn2

If you can split on the whitespace, you can do

awk -F"   " '{print $2 }'

Upvotes: 2

jrjc
jrjc

Reputation: 21873

you can do that :

$ echo "SPA-8   N_NNN4_1.2.3.4.zzzzzzz_bbb.nnn2" | awk -F"N\_NNN" '{print "N\_NNN"$2}'
N_NNN4_1.2.3.4.zzzzzzz_bbb.nnn2

Upvotes: 1

Related Questions