我是一名Java程序员,也是一名shell脚本新手,我有一项艰巨的任务,要解析千兆字节的日志,查找行中第446个位置有“1”(只有1个没有qout)的行,我可以通过运行这个cat *.log | cut -c 446-446 | sort | uniq -c来验证字符1是否存在,但我无法提取行并将其打印到输出文件中。

最佳答案

awk '{if (substr($0,446,1) == "1") {print $0}}' file

是最基本的。
您可以在打印功能中使用FILENAME将文件名添加到输出中,这样您就可以
awk '{if (substr($0,446,1) == "1") {print FILENAME ":" $0}}' file1 file2 ...

第1页

关于linux - 如果某个位置存在字符,则提取整行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43613458/

10-12 18:01