Regex conditional

1Gyy7Gp #use 7 if you wish to paste the line at 8
3Gyy8Gp #use 8 if you wish to paste the line at 9
0
30.01.2017, 21:33
2 ответа

@Kusalananda Похоже, он использует расширенное регулярное выражение без опции -E в своей первой команде подстановки в

sed -e 's/X\s+([^\(]*)\(/X(\1,/g' -e 's/X(\([^,]*\),)/X(\1)/g' ./file

. Но вторая команда выглядит нормально. {{1 }} Сделав все в расширенном регулярном выражении, это будет работать

sed -Ee 's/X\s+([^\(]*)\(/X(\1,/g;s/X\(([^,]*),\)/X(\1)/g' ./file
1
29.04.2021, 00:04

Что-то вроде этого должно получиться, если вы запустите его на файле(ах) после выполнения первой замены, которая ввела ошибку:

sed 's/X(\([^,]*\),)/X(\1)/g'

Он заменит X(<что-то-не-запятая>,) на X(<что-то-не-запятая>).

Чтобы выполнить обе замены за один раз:

sed -e 'the first substitution' -e 'the second substitution'
1
29.04.2021, 00:04

Теги

Похожие вопросы