awkおよび正規表現の使用をサポートしてください。

awkおよび正規表現の使用をサポートしてください。

区切り記号付きのファイルがあり、|最初のフィールドとは異なるフィールドを印刷し、$1正規表現に一致する部分を印刷する必要があります \[(.*?)\>

cat x.txt |nawk -F"|" '{print $1"|"match regex $2,"|" match regex $3}'

どうすればいいですか?

ベストアンサー1

まず、そもそもcatコマンドは必要ありません。コマンドラインの最後に「<x.txt」を使用してファイル出力をawkにリダイレクトできます。より良いことは、awkが処理するファイル名を引数として使用できることです。だから私はあなたが次のことをしたいと思います:

awk -F"|" '{
  printf "%s", $1;
  for (i=2; i<=NF; i++) {
    if (match($i, /\[(.*?)>/)) {
      printf " %s", substr($i,RSTART,RLENGTH);
  }};
  printf "\n"
}' x.txt

ファイルの各行に最初のフィールドを印刷し、残りの各フィールド(存在する場合)で見つかったすべての正規表現一致を印刷します。出力フィールドはスペースで区切られます。これは、2番目のprintfコマンドで先行スペースを編集することで変更できます。

おすすめ記事