这个 egrep 命令如何找到文件中最长的行?

这个 egrep 命令如何找到文件中最长的行?

我发现了一个使用命令行egrep查找文本文件中最长的行,但我不太了解所有的语法,也不太了解它是如何工作的。

随着对这项技术的更好掌握,我可能能够调整它以适应其他任务。

我理解egrep和,但我不明白和这两个字符-n的用法。^.$

有人可以分解以下命令吗?

egrep -n "^.{$(wc -L < filename)}$" filename

答案1

完整命令: egrep -n "^.{$(wc -L < filename)}$" filename

分解:

egrep= 该egrep程序搜索与模式匹配的行并打印它们。(类似于grep)。相当于grep -E将引号中的内容解释为扩展的正则表达式模式。

-n=egrep 参数说明行号。

$(wc -L < filename)-wc是一个字数统计程序,用于打印文件中新行和内容的数量。 -Lwc最大行长度参数。 是将指定文件< filename的全部内容传递到的命令。 是 Bashism(与程序和脚本语言相关的东西),是一种说法“在这里处理命令,然后将输出放在整个字符串的位置。该命令的其余部分似乎是正则表达式的一部分,加上传递到字符串中的输入,最终这只是匹配的模式。filenamewc$( )bashegrep

"^.{... }$"= 这"只是一种将该模式传递给的方法,egrep而不会将其中的字符解释为 Bash 代码。其余部分是正则表达式模式。正则表达式是每个人都应该知道的东西。我使用正则表达式帮助我学习和理解正则表达式,并构建正则表达式模式。分解一下,^是一个锚点,表示它与字符串的开头匹配。 .表示下一个参数之前的换行符以外的任何字符。 {并根据 RegExr 指示输出中的}实际{和字符。末尾是一个锚点,用于指示字符串的结尾。}$

相关内容