
最後のフィールドを持つファイルから複数のフィールドを抽出する必要があります。ファイルの構造が異なる可能性があるため、最後のフィールドをハードコードできません。 2つの異なるファイルの例を見てみましょう。
ファイル1
a,b,c
d,e,f
その他のファイル File2
a,a,a,a
b,b,b,b
要件は、ファイル 1 から最初のフィールドと最後のフィールドを抽出するのと同じ場合もあり、要件は、ファイル 2 から 2 番目と最後のフィールドを抽出するのと同じ場合もあります。
抽出するフィールドが記載されているが最後のフィールドが共通である構成テーブルからこの要件を取得します。 1つの方法はwhileループを使用することです。しかし、whileループなしでこれを達成する方法はありますか?
答え1
awkを使用してください:
awk -F, '{print $1,$NF}' file
答え2
次の 2 つの例では、正しい方向に進むことができます。
echo {a..z} | awk '{print $1" "$NF}'
a=1; b=5; echo {a..z} | awk -v a=$a -v b=$b '{print $a" "$b}'
あなたの場合の使用法は次のとおりです。
awk <options> myFile
- awk
$n
変数は入力行のn番目のフィールドです。 NF
フィールド数の場合、$NF
行の最後のフィールドです。- を使用して入力フィールド区切り文字を指定することもできます
-F<character>
。ここでは:-F,
答え3
低レベルソフトウェアツールbash
、paste
および使用するcut
方法rev
:
paste -d, <(cut -d, -f1 File1) <(rev File1 | cut -d, -f1 | rev)
出力:
a,c
d,f
注:指定されていないコンテンツは抽出できないためrev
、cut
最後柱。しかし、cut
いつでも抽出できます。最初列がrev
用意されています。