对于我的生活,我无法找到如何做这个非常简单的程序。我想:
例如,在文件的内容中:
1
2
3
会变成:
FILE1.TXT
FILE2.TXT
file3.txt
我试过这个:
sed 's/[0-9]+/{file&.txt}/' file_name.txt
但没有发生任何事。我在网上看到使用{0}或{/ 1}的片段,但我很难找到这意味着什么的解释。
最终目标是让xargs
将此文本中的所有文件名复制到另一个目录。我确信如果没有我在这里做的文本文件,可能还有另一种方法可以实现这一点。如果有人对这个目标有一个更简单的答案,那会很高兴听到,虽然我也想知道如何使用sed!感谢。
答案 0 :(得分:6)
是的,这确实有效:
$cat file 1 2 3 $sed 's/.*/File&.txt/' file File1.txt File2.txt File3.txt
答案 1 :(得分:3)
在sed
中,+
不是特殊字符,字面意思是+
字符。你需要用反斜杠来逃避它:
sed 's/[0-9]\+/file&.txt/' file_name.txt
或者您可以使用-r
选项,该选项会添加几个特殊字符(包括+
):
sed -r 's/[0-9]+/file&.txt/' file_name.txt
答案 2 :(得分:1)
不确定为什么您需要sed
作为最终目标(或xargs
)。你可以这样做:
while read -r name; do
cp "File${name}.txt" /path/to/copy
done < file_name.txt