次の入力テキストファイルがありますtext.txt
。
Header
Column1|Column2|Column3
C11|C12|C13
C21|C22|C23
C31|C32|C33
Footer
私の出力は次のようになります
Column1|Column3
C11|C13
C21|C23
C31|C33
現在私が使用している命令は
awk -F "|" 'BEGIN{NR > 1; OFS = "|"}{print $1, $3}' text.txt > text2.txt
NR > 1
Headerが最初の行なので無視するとどうでしょうか?
また、最後の行をどのように無視できますか?
答え1
awk -F '|' -vOFS='|' '/^Header|^Footer/ {next} ; {print $1, $3}' text.txt
一致する行をスキップする^Header
か、^Footer
他のすべての行の列1と3を印刷します。
フィールド区切り記号(FS)と出力フィールド区切り記号(OFS)の両方が設定されます|
。
答え2
たぶん、次のようなものを使用できます(a.txt
入力を含む)。
head --lines=-1 a.txt | tail --lines=+2 | awk -F "|" '{print $1"|"$2}'
head --lines=-1
最後の行を除くすべてを印刷します。
tail --lines=+2
すべてを印刷しますが、2行目から始めて
awk -F "|" '{print $1"|"$3}'
1列目と3列目を取得します。
結果:
Column1|Column3
C11|C13
C21|C23
C31|C33