当前位置:  开发笔记 > 编程语言 > 正文

如何从管道分隔文件中打印字段?

如何解决《如何从管道分隔文件中打印字段?》经验,为你挑选了2个好方法。

我有一个文件,字段由管道字符分隔,我想只打印第二个字段.此尝试失败:

$ cat file | awk -F| '{print $2}'
awk: syntax error near line 1
awk: bailing out near line 1
bash: {print $2}: command not found

有没有办法做到这一点?



1> Zsolt Botyka..:

或者只使用一个命令:

cut -d '|' -f FIELDNUMBER



2> dmckee..:

这里的关键点是管道字符(|)必须转义到shell.使用" \|"或" '|'"来保护它免受shell干涉,并允许它awk在命令行上传递.


阅读评论我看到原始海报提供了原始问题的简化版本,其涉及file在选择和打印字段之前进行过滤.使用了通过grep,并将结果通过管道传输到awk以进行现场选择.这说明cat file了问题中出现的完全没有必要(它取代了grep file).

很好,这将工作.但是,awk本身就是一个模式匹配工具,可以信任查找和处理匹配的行而无需调用grep.使用类似的东西:

awk -F\| '//{print $2;}{next;}' file

//位告诉awk在匹配的行上执行后续操作.

丢失的{next;}是跳过输入中下一行的默认操作.它似乎没有必要,但我很久以前就有这个习惯......

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有