2

对于我的一生,我无法找到如何执行这个非常简单的程序。我想要:

  1. 读取一个文件,该文件每行仅包含数字
  2. 在文件中的数字前后附加字符。

例如,在文件的内容中:

1
2
3

会变成:

文件1.txt
文件2.txt 文件3.txt

我试过这个:

sed 's/[0-9]+/{file&.txt}/' file_name.txt

但什么也没发生。我在网上看到使用 {0} 或 {/1} 的片段,但我很难找到这意味着什么的解释。

这样做的最终目标是xargs将此文本中的所有文件名复制到另一个目录。我敢肯定,没有我在这里做的文本文件,可能还有另一种方法可以实现这一点。如果有人对这个最终目标有一个更简单的答案,那将是很高兴听到,虽然我也想弄清楚如何使用 sed!谢谢。

4

3 回答 3

6

是的,这确实有效:

$猫文件
1
2
3
$sed 's/.*/File&.txt/' 文件
文件1.txt
文件2.txt
文件3.txt
于 2013-07-01T22:34:13.600 回答
3

in sed,+不是特殊字符,字面意思是+字符。您需要使用反斜杠对其进行转义:

sed 's/[0-9]\+/file&.txt/' file_name.txt

或者,您可以使用-r添加几个特殊字符(包括+)的选项:

sed -r 's/[0-9]+/file&.txt/' file_name.txt
于 2013-07-01T22:30:31.247 回答
1

不知道为什么你需要sed你的最终目标(或xargs就此而言)。你可以简单地做:

while read -r name; do 
    cp "File${name}.txt" /path/to/copy
done < file_name.txt
于 2013-07-02T05:10:27.613 回答