我有一个名为的输入文本文件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
打印所有内容但从第二行开始
awk -F "|" '{print $1"|"$3}'
获取第一列和第三列
结果是:
Column1|Column3
C11|C13
C21|C23
C31|C33