如何使用 grep 在文件中搜索 ---> 有随机列,每列用竖线分隔,每列可能有 2 或 3 个词
How to search inside a file using grep ---> have random column , each column separated by a pipe each column may have 2 or 3 words
示例文件具有以下内容
aaa abc | xwq wqe wqe | qwer wqewqe qeweqwe | 500
qweqw ewqe | hewje hjh | elwl kllk | 300
qwe | wee dsd | wqeqw ewe eww ewe | 200
我们上面有 4 列...我只想用 grep 做,没有其他命令
如何使用 grep 搜索完整的第二列?
如果无法使用 grep 完成。请告诉我最简单的方法。
不幸的是,如果没有其他命令,你无法实现这一点,grep 只处理行,或者换句话说:行。
grep可以做到,它没有这个功能,而其他命令已经完成了。
您可以通过阅读帮助文档来检查这一点,使用命令 man grep
和awk {print } file_name
会帮助你
并不是说不能用grep
来完成,但对于这个工具来说,使用非常复杂的正则表达式和non-portable 争论 所以,因为你也说“请告诉我最简单的方法”,你似乎想要的是 cut
存在要做的工作:
$ cut -d'|' -f2 file
xwq wqe wqe
hewje hjh
wee dsd
您可以按照以下方式使用 GNU grep
完成此任务,令 file.txt
内容为
aaa abc | xwq wqe wqe | qwer wqewqe qeweqwe | 500
qweqw ewqe | hewje hjh | elwl kllk | 300
qwe | wee dsd | wqeqw ewe eww ewe | 200
然后
grep -Po '^[^|]*[|]\K([^|]*)' file.txt
给出输出
xwq wqe wqe
hewje hjh
wee dsd
解释:我使用可变长度的正向后视,这迫使我使用 \K
,正向后视部分是:行首,除了文字 |
之外的所有内容都重复了 0 次或多次,文字 |
, 匹配部分是除文字之外的所有内容 |
重复 0 次或多次。
(在 GNU grep 3.4 中测试)
示例文件具有以下内容
aaa abc | xwq wqe wqe | qwer wqewqe qeweqwe | 500
qweqw ewqe | hewje hjh | elwl kllk | 300
qwe | wee dsd | wqeqw ewe eww ewe | 200
我们上面有 4 列...我只想用 grep 做,没有其他命令
如何使用 grep 搜索完整的第二列?
如果无法使用 grep 完成。请告诉我最简单的方法。
不幸的是,如果没有其他命令,你无法实现这一点,grep 只处理行,或者换句话说:行。 grep可以做到,它没有这个功能,而其他命令已经完成了。
您可以通过阅读帮助文档来检查这一点,使用命令 man grep
和awk {print } file_name
会帮助你
并不是说不能用grep
来完成,但对于这个工具来说,使用非常复杂的正则表达式和non-portable 争论 所以,因为你也说“请告诉我最简单的方法”,你似乎想要的是 cut
存在要做的工作:
$ cut -d'|' -f2 file
xwq wqe wqe
hewje hjh
wee dsd
您可以按照以下方式使用 GNU grep
完成此任务,令 file.txt
内容为
aaa abc | xwq wqe wqe | qwer wqewqe qeweqwe | 500
qweqw ewqe | hewje hjh | elwl kllk | 300
qwe | wee dsd | wqeqw ewe eww ewe | 200
然后
grep -Po '^[^|]*[|]\K([^|]*)' file.txt
给出输出
xwq wqe wqe
hewje hjh
wee dsd
解释:我使用可变长度的正向后视,这迫使我使用 \K
,正向后视部分是:行首,除了文字 |
之外的所有内容都重复了 0 次或多次,文字 |
, 匹配部分是除文字之外的所有内容 |
重复 0 次或多次。
(在 GNU grep 3.4 中测试)