我收到了一项任务,要求对文本文件执行以下命令:
- 从文件中选择每个第二个字段
- 排序并选择前 3 个
value
唯一 value.text
重定向 stderr 时 打印每个内容
我带来的是
cut cities.txt -f1 | sort| uniq | head -3 | xargs rename "s/*/*.text/" * | xargs cat 2>error.txt
但这会产生错误:
Quantifier follows nothing in regex; marked by <-- HERE in m/* <-- HERE / at (user-supplied code).
我也尝试用 来做这件事mv * *.text
,但是它不起作用,说mv: target 'Germany' is not a directory
,其中“德国”是 s 列表中的最后一个值value
。
我对这些命令中的任何一个都可以接受,但如果能解释一下为什么它们都不起作用(以及如何使它们起作用),我会更加感激。
答案1
以防有人偶然发现这个问题:John1024 对这个问题的评论是正确的解决方案,但有一点需要注意 - 尝试打印出不存在文件的内容所生成的错误消息是由生成的xargs rename "s/.*/$&.text/"
,因此如果您需要将错误消息重定向到另一个文件,您必须附加2>error.text
到rename
命令中,而不是写另一个| xargs cat 2>error.txt