Как интегрировать звездочку (*) в изменяющийся шаблон в sed? - PullRequest
1 голос
/ 17 апреля 2019

У меня есть файл test1.txt с большим количеством строк с различной информацией.Среди них некоторые строки имеют такую ​​информацию:

Fam_grapsidae
Fam_bursidae
Fam_siluridae

Я хочу изменить Fam_* на italic{*}, чтобы иметь в test2.txt:

italic{grapsidae}
italic{bursidae}
italic{siluridae}

Итак, я попытался с помощью sed:

 sed 's/Fam_*/italic{*\}/g' test1.txt > test2.txt

Но я получил это:

italic{*}grapsidae

Итак, как мне интегрировать звезды в команду sed, чтобы иметь italic{grapsidae}выражение?

Любой совет с благодарностью.

Ответы [ 2 ]

6 голосов
/ 17 апреля 2019

То, что вы хотите:

sed 's/Fam_\(.*\)/italic{\1}/' test1.txt > test2.txt
1 голос
/ 17 апреля 2019

Должен использовать опцию extended regex по -E, чтобы иметь возможность вернуть его после захвата в первую группу

sed -E 's/Fam_(\w*)/italic{\1}/' test1.txt > test2.txt 
...