文件由 | 分隔管道符号
我的文件.txt
Hello|how|are|you|hope|you|are|doing|fine
Lilly|jasmine|rose|sunflower|nightfire|flowers
我想删除大于 3 的列。我希望结果集为
Hello|how|are
Lilly|jasmine|rose
在 unix shell 脚本中使用 unix 命令。
答案1
使用OFS
and FS
(输出)字段分隔符,只需打印前 3 列
$ awk 'BEGIN{OFS=FS="|"}{print $1,$2,$3}' file.txt
Hello|how|are
Lilly|jasmine|rose
使用 sed,仅保留前两个“ |[everything that's not |]
”:
~$ sed 's/\(\(|[^|]*\)\{2\}\).*/\1/' file.txt
Hello|how|are
Lilly|jasmine|rose
答案2
cut -d'|' -f1-3 myfile
这将是更容易的解决方案。工作正常!
答案3
在awk
里面做就足够了:
awk 'BEGIN{FS=OFS="|"}; NF=3' myfile.txt
(如果您有 17 列,如某些评论中所述,只需将 更改3
为17
。)