изменить строку с помощью sed - PullRequest
1 голос
/ 27 марта 2012

Мне нужно использовать sed для следующего требования, используя sed

У меня есть одна строка как $ str, и мне нужно заменить ударную строку в файле

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

но все равно не работает. Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Попробуйте:

$ 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 голосов
/ 27 марта 2012
echo 'abh{1..$abh}             cdf_$ghu,xyz                 *  abh{}.$xy' | sed 's/\(.*\$ghu,\)\(.*\)\( .*\)/\1\$str\3/g'
...