2013-07-01 43 views
2

對於我的生活,我無法找到如何做到這一非常簡單的過程。我想:使用正則表達式工具將字符串追加到另一個

  1. 讀取一個文件,其中每行僅包括數
  2. 追加角色之前,文件的數量後。

例如,在文件的內容:

會變成:

FILE1.TXT
file2.txt
file3.txt

我已經試過這樣:

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

,但什麼都沒有發生。我在網上看到使用{0}或{/ 1}的片段,但我很難找到解釋這意味着什麼。

這樣做的最終目標是讓xargs將本文中的所有文件名複製到另一個目錄。我相信有沒有我在這裏做的文本文件可能有另一種方法來實現這一點。如果任何人對這個最終目標有一個更簡單的答案,那很好聽,但我也想弄清楚如何使用sed!謝謝。

回答

3

sed,+不是一個特殊字符,字面意思是+字符。你需要用反斜槓轉義:

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

或者您可以使用-r選項,它增加了一些特殊字符(包括+):

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

在GNU SED的'-r'交換機將沒有什麼比「語法糖」,因爲它消除了需要預先元字符前一個反斜槓'()+更多|' – potong

+0

感謝;我選擇了這個答案,它更直接地解決了這個問題。 – newt

6

是的,這樣做的工作:

 
$cat file 
1 
2 
3 
$sed 's/.*/File&.txt/' file 
File1.txt 
File2.txt 
File3.txt 
+0

謝謝,這工作。 – newt

1

不知道爲什麼你需要sed爲您的最終目標(或xargs就此事)。你可以簡單地做:

while read -r name; do 
    cp "File${name}.txt" /path/to/copy 
done < file_name.txt 
相關問題