使用脚本删除字段分隔文件中的列

使用脚本删除字段分隔文件中的列

文件由 | 分隔管道符号

我的文件.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

使用OFSand 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 列,如某些评论中所述,只需将 更改317。)

相关内容