
次のコマンドでは
cat abc.txt|awk -F"[0-9]+." '{print FS $3}'
FS
ただし、一致する値が対応するフィールド区切り文字で印刷されることを[0-9]+.
望みます(たとえば、「99」)。awk
。どうすればいいのかご存知ですか?
これについては以下でお話しましょうabc.txt
。 2番目の文章を数字で区切りたいです。 asを選択FS
して番号を印刷します。出力から。デフォルトでは…の値を印刷したいと思いますFS
。この要求は多くの場所で発生しました。
14. Animals 20. features
1. tiger 1. wild animal
2. cat 2. domestic animal
3. parrot 3. bird with wings
答え1
FS
一致させたい文字列の値は望ましくありませんFS
(同じ行の別の文字列である可能性があります)。
> awk -F"[0-9]+." '{ printf "line %3d.: ",NR;
if (NF==1) { print "No FS match in this line"; next; }; str=$0;
for(j=1;j<NF;j++) { match(str, FS); fs_str=substr(str, RSTART, RLENGTH);
printf "_%s_, ",fs_str; str=substr(str, RSTART+RLENGTH)}; print ""; }' file
line 1.: _14._, _20._,
line 2.: _1._, _1._,
line 3.: _2._, _2._,
line 4.: _3._, _3._,
答え2
gawk
いいねFPATそのために
awk -vFPAT='[[:digit:]]+\\.' 'NF{$1=$1; print}' file
14. 20.
1. 1.
2. 2.
3. 3.