使用Regex工具将字符串附加到另一个字符串

时间:2013-07-01 22:21:15

标签: regex perl unix sed awk

对于我的生活,我无法找到如何做这个非常简单的程序。我想:

  1. 读取一个文件,该文件仅包含每行的编号
  2. 在文件中的数字前后追加字符。
  3. 例如,在文件的内容中:

      

    1
      2
      3

    会变成:

      

    FILE1.TXT
      FILE2.TXT
      file3.txt

    我试过这个:

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

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

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

3 个答案:

答案 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