我正在尝试查找包含该字母的所有名称y
。接下来,我想以相反的顺序对该命令的输出进行排序,并将输出写入一个新文件。
这是我的代码
grep -ioh '[y]' names | sort -fr | > newfile
答案1
-o
GNU 的选项将使grep
实用程序仅返回与表达式匹配的子字符串。你的表情是[y]
,和刚才一样y
。这意味着grep
将返回字符列表y
(和Y
,当您使用不区分大小写的匹配时-i
)。
此外,管道末尾还有语法错误。最后一个|
角色不应该出现。相反,重定向应该是直接来自(或由选项和选项参数sort
替换)。-o newfile
sort
你没有提到文件的内容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
或同一主题的许多其他变体之一。