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
Run Code Online (Sandbox Code Playgroud)
我的加急输出是:
a|~|b|~|c
1|~|2|~|3
11|~|22|~|33
111|~|222|~|333
Run Code Online (Sandbox Code Playgroud)
使用您显示的示例,请尝试以下awk代码。您需要将字段分隔符设置为|~|并从行中删除起始空间,然后打印行。
awk -F'\\|~\\|' -v OFS='|~|' '{sub(/^[[:blank:]]+/,"");print $1,$2,$3}' Input_file
Run Code Online (Sandbox Code Playgroud)
如果您想保留空格(这是在编辑前的初始帖子中),请尝试以下操作:
awk -F'\\|~\\|' -v OFS='|~|' '{print $1,$2,$3}' Input_file
Run Code Online (Sandbox Code Playgroud)
注意:在房间里与用户聊天并了解为什么此代码由于gunzip -c file使用错误而对用户不起作用,其输出被保存到用户正在运行awk程序的变量中,因此更正该命令生成正确的文件并且awk程序在上面运行良好。添加此内容作为未来读者的参考。