2012-03-27 28 views
1

我需要所使用的sed爲以下需求量的使用sed的修改行使用SED

我有一個字符串作爲$海峽,我需要更換的打擊線在一個文件中

abh{1..$abh}    cdf_$ghu,xyz     * abh{}.$xy 

新修改的行應如下

abh{1..$abh}    cdf_$ghu,$str     * abh{}.$xy 

注意"xyz"可以是任意值。您能否告訴我如何在一個班輪中使用sed?

sed 's/\(^\s*abh{1..$abh}\s*\)\(.*xyz\)/\1/' file.txt 

但仍然無法正常工作。任何幫助,將不勝感激。

+1

怎麼樣'sed的 'S/XYZ/$ STR /''? – kev 2012-03-27 09:13:21

回答

1

試試這個:

$ sed 's|\(\S\+\s\+[^,]\+,\)\S\+\(\s\+.*\)|\1$str\2|' file.txt 
abh{1..$abh}    cdf_$ghu,$str     * abh{}.$xy 

甚至更​​簡單:

$ sed 's|,\S\+|,$str|' example.txt 
+0

非常感謝您的迴應它可以正常工作,但$ str的值不會被替換,而是$ str被打印爲文字。例如,如果$ str =「Hello」,所以「Hello」應該以修改後的行打印。 – user419534 2012-03-27 09:54:59

+0

好的,我需要把變量放在單引號中,它工作。 sed's | \(\ S \ + \ s \ + [^,] \ +,\)\ S \ + \(\ s \ +。* \)| \'''str'\ 2 |' file.txt謝謝你的迴應 – user419534 2012-03-27 10:04:55

+0

你也可以將單引號改爲雙引號,它啓用變量在字符串中的插值。 – 2012-03-28 06:17:44

0
echo 'abh{1..$abh}    cdf_$ghu,xyz     * abh{}.$xy' | sed 's/\(.*\$ghu,\)\(.*\)\(.*\)/\1\$str\3/g' 
+0

選擇您的代碼,然後單擊工具欄中的**圖標。它會縮進你的代碼。 – kev 2012-03-27 12:18:00

+0

感謝您的信息 – Vishal 2012-03-27 13:49:35