I am looking just to accommodate my query into one-liner.
I have a below file content where i want to remove all before last colon(:) including itself and then replace comma(,) into newline to get the desired results.
these all comma separated values are linux user ID’s
File content:
pa_tools:x:2998:nep08569,nep08623,nep14587,kpc12117,tpa06038,tpa10226,tpa14459,tpa14596,tpa21272,tpa28233,tpa32495,cpf30049,cpf32734,cpf38753,cpf41124,cpf41645,cpf42488,cpf42609,cpf54284,cpf55701,cpf56556,cpf61223,cpf64941,cpf66553,cpf69011,cpf72912,pfc37974,pfc40981,pfc48626,pfc69581,pfc80043,pfc82969,pfc84163,pfc87399,pfc87990,pfc87991,pfc98638,pa_tools_rs
Already tried:
working solution:
1- $ sed -e 's/.*://g' -e 's/,/n/g' test_g
2- $ awk -F: '{print $NF}' test_g| awk 'BEGIN{RS=","}{$1=$1}1'
3- $ cat test_g| tr "," "n"| tr ":" "n" | sed '1,3d'
result:
$ sed -e 's/.*://g' -e 's/,/n/g' test_g nep08569 nep08623 nep14587 kpc12117 tpa06038 tpa10226 tpa14459 tpa14596 tpa21272 tpa28233 tpa32495 cpf30049 cpf32734 cpf38753 cpf41124 cpf41645 cpf42488 cpf42609 cpf54284 cpf55701 cpf56556 cpf61223 cpf64941 cpf66553 cpf69011 cpf72912 pfc37974 pfc40981 pfc48626 pfc69581 pfc80043 pfc82969 pfc84163 pfc87399 pfc87990 pfc87991 pfc98638 pa_tools_rs
Is there a better trick, please advise.
Advertisement
Answer
You may use this solution on any version of awk:
awk -F: '{$0 = $NF; gsub(/,/, "n")} 1' file
nep08569
nep08623
nep14587
kpc12117
tpa06038
tpa10226
tpa14459
tpa14596
tpa21272
tpa28233
tpa32495
cpf30049
cpf32734
cpf38753
cpf41124
cpf41645
cpf42488
cpf42609
cpf54284
cpf55701
cpf56556
cpf61223
cpf64941
cpf66553
cpf69011
cpf72912
pfc37974
pfc40981
pfc48626
pfc69581
pfc80043
pfc82969
pfc84163
pfc87399
pfc87990
pfc87991
pfc98638
pa_tools_rs
Using gnu-sed it will something similar to your attempted code:
sed 's/.*://; s/,/n/g' file