awk命令打印列数据
cat file1.txt | awk -F '{print $1 "|~|" $2 "|~|" $3}' > file2.txt
我正在使用上面的命令从 file1 过滤前三列并放入文件中。
但只获取列名而不是列数据。
怎么做?
|~| - 是分隔符。
file1.txt 的值为:
a|~|b|~|c|~|d|~|e
1|~|2|~|3|~|4|~|5
11|~|22|~|33|~|44|~|55
111|~|222|~|333|~|444|~|555
我的加急输出是:
a|~|b|~|c
1|~|2|~|3
11|~|22|~|33
111|~|222|~|333
回答
使用您显示的示例,请尝试以下awk代码。您需要将字段分隔符设置为|~|并从行中删除起始空间,然后打印行。
awk -F'|~|' -v OFS='|~|' '{sub(/^[[:blank:]]+/,"");print $1,$2,$3}' Input_file
如果您想保留空格(这是在编辑前的初始帖子中),请尝试以下操作:
awk -F'|~|' -v OFS='|~|' '{print $1,$2,$3}' Input_file
注意:在房间里与用户聊天并了解为什么此代码由于gunzip -c file使用错误而对用户不起作用,其输出被保存到用户正在运行awk程序的变量中,因此更正该命令生成正确的文件并且awk程序在上面运行良好。添加此内容作为未来读者的参考。
- 是的,你明白了!我讨厌 `"|~|"` 那些 - 认为它作为字段分隔符的人 - 应该被枪杀......