包含egrep、tr和expand的管道解释

包含egrep、tr和expand的管道解释

有人可以向我解释以下管道吗?

我正在尝试过滤服务中的端口列表,以便仅列出唯一的端口名称。 doexpand和do到底是什么tr,以及使用 with 的正则表达式有什么作用egrep

expand regexAufgabe | egrep -v '^#|^$' | tr -s ' ' | cut -d ' ' -f2 | cut -d / -f2 | sort | uniq

答案1

expand实用程序将文件中的制表符转换为空格,即“将制表符扩展为空格”。管道首先对名为 的文件的内容执行此操作regexAufgabe。看man expand

然后该egrep实用程序与选项-v和正则表达式一起使用^#|^$。该-v选项否定了测试的意义,这意味着egrep将输出执行此操作的每一行不是匹配给定的正则表达式。正则表达式匹配以#字符开头或空的行。这意味着管道中的第二步将删除以 开头的空行#

tr实用程序通常用于将一组字符转换为另一组字符,但管道使用它来将多个连续空格“挤压”在一起为单个空格。看man tr

cut然后用于提取结果数据集中的第二个空格分隔字段,然后/从中提取第二个空格分隔字段。

管道的最后两个阶段sort | uniq可以编写为单个命令sort -u。这会对数据进行排序并删除重复项。

简而言之,您有一个管道,可以用(单个)空格替换制表符(并将多个空格压缩为一个),删除空行和注释掉的行。然后,它从每行的第二个空格分隔字段中挑选出唯一的第二个/空格分隔字段。

相关内容