文字列で区切られた列を持つファイルがあります。たとえば、
one<xx>two<xx>three<xx>four<xx>five<xx>six
one11<xx>two11<xx>three11<xx>four11<xx>five11<xx>six11
特定の列(たとえば、列1、3、5)のテキストを抽出したいと思います。したがって、出力は次のようになります。
one<xx>three<xx>five
one11<xx>three11<xx>five11
どうすればいいですか?次のコマンドを使用してくださいawk
。
答え1
入力フィールド区切り記号(FS
)と出力フィールド区切り記号(OFS
)を次に設定します<xx>
。
awk 'BEGIN{FS=OFS="<xx>"} {print $1,$2,$5}' file
出力:
one<xx>two<xx>five
one11<xx>two11<xx>five11
答え2
$ perl -F'<xxx>' -pale ' $"="<xxx>";$_ = "@F[1,3,5]"' file
フィールド区切り文字を目的の文字列に設定し、フィールドのインデックスを収集し、$ "の文字列に関連付けて現在のレコードとして保存します。-pが自動的に印刷されます。