如何正确使用grep搜索文件并将结果倒序排序后保存至新文件
解决grep+sort组合命令的问题
我来帮你理清这个命令的正确写法,你之前的问题主要是没搞清楚命令之间的数据流传递方式,还有一些语法小错误~
正确的命令写法
直接用**管道符|**来连接grep和sort命令,这样就能把grep的输出传递给sort处理,最终写入文件:
grep 'r' countries | sort -r > output
拆解一下每个部分的作用
grep 'r' countries:搜索countries文件中包含字符r的所有行,输出到标准输出|:管道符,把前一个命令的输出作为后一个命令的输入sort -r:对接收的输入进行倒序排序(-r是reverse的缩写)> output:把最终排序后的结果重定向写入到output新文件中
你之前命令的错误原因
- 用
&&的问题:&&是用来执行多个独立命令的(前一个成功才执行后一个),但sort -r需要输入,单独执行它会等待你手动输入,而且你写成了sort-r(-r和sort之间没空格),这是语法错误,系统会把sort-r当成一个不存在的命令。 - 把sort当成grep参数的问题:比如
grep y countries sort -r >output,这里grep会把sort当成要搜索的文件名,自然找不到这个文件,报错也就正常了。 - 重定向顺序错误:
grep y countries> output sort这种写法是先把grep的结果写到output,然后sort没有任何输入,也会报错,而且逻辑上完全颠倒了处理顺序。
内容的提问来源于stack exchange,提问作者C212
相关产品推荐
相关产品推荐

