Linux:组合命令

Linux:组合命令

我正在尝试查找包含该字母的所有名称y。接下来,我想以相反的顺序对该命令的输出进行排序,并将输出写入一个新文件。

这是我的代码

grep -ioh '[y]' names | sort -fr | > newfile

答案1

-oGNU 的选项将使grep实用程序仅返回与表达式匹配的子字符串。你的表情是[y],和刚才一样y。这意味着grep将返回字符列表y(和Y,当您使用不区分大小写的匹配时-i)。

此外,管道末尾还有语法错误。最后一个|角色不应该出现。相反,重定向应该是直接来自(或由选项和选项参数sort替换)。-o newfilesort

你没有提到文件的内容names,所以我要认为它是一个包含名称的文件,每行一个。

要获取包含该字母的所有行y(忽略大小写),您可以使用

grep '[yY]' names

或者

grep -i 'y' names

然后,您可以按相反的顺序对它们进行排序,再次忽略大小写(尽管我想大多数名称无论如何都会以大写字母开头),sort -f -r按照您所做的那样使用:

grep '[yY]' names | sort -f -r -o newfile

或者

grep '[yY]' names | sort -f -r >newfile

在这个特别的在这种情况下,命令的顺序并不重要。

sort -f -r names | grep '[yY]' >newfile

你甚至可以把它写成

( sort -f -r | grep '[yY]' ) <names >newfile

或者

<names ( grep '[yY]' | sort -f -r ) >newfile

或同一主题的许多其他变体之一。

相关内容