AWKでパターン化されたフィールド区切り記号の一致値を印刷する方法

AWKでパターン化されたフィールド区切り記号の一致値を印刷する方法

次のコマンドでは

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._,

おすすめ記事