Замена первого вхождения шаблона в строку на все строки в файле с помощью sed

Замена первого вхождения шаблона в строку на все строки в файле с помощью sed

Можно ли это сделать в одну строку?

У меня получился такой вывод:

"First line" - Description  
" Second line" - Description  
"Third line" - Description  
" Fourth line" - Description  

Эти входные данные генерируются автоматически.

Я хочу заменить первое вхождение "(кавычки + пробел) на "(кавычки) для каждой строки. Если я применю замену глобально, она также изменит каждое вхождение на line" -, line"-поэтому мне было интересно, можно ли использовать однострочник sed для достижения этого.

Я пробовал использовать ^вот так

sed -r ':a;N;$!ba;s/(\^\" )/\"/g'

Но это не работает, это ничего не заменяет. Я пробовал

sed -r ':a;N;$!ba;s/(^|\" )/\"/g'

и он заменяет все вхождения. Я только начал использовать sed, поэтому не знаю, делаю ли я что-то неправильно.

Что я здесь упускаю?

решение1

Вы слишком много обдумываете. sedпо умолчанию заменяет только первый экземпляр в строке (без модификатора /g), хотя вы все равно хотите привязаться, потому что вам не так нужен первый экземпляр в строке, как тот, что в начале строки; и вам обычно не нужны явные действия в строке, которые вы пытаетесь использовать (зачем?).

sed 's/^" /"/'

решение2

Более общий ответ, поскольку я не могу прокомментировать ответ geekosaur - Вы бы не поставили ^ (якорь начала строки). Например, если вы хотите заменить первое вхождение A на B, вы бы сделали

sed 's/A/B/'

решение3

С использованиемПерл

~$ perl -pe 's/^" /"/;'   file 

С использованиемРаку(ранее известный как Perl_6)

~$ raku -pe 's/^\" \s /"/;'  file

Пример ввода:

"First line" - Description  
" Second line" - Description  
"Third line" - Description  
" Fourth line" - Description  

Пример вывода (оба примера кода):

"First line" - Description  
"Second line" - Description  
"Third line" - Description  
"Fourth line" - Description  

https://perldoc.perl.org/perlre
https://perldoc.perl.org/perltrap#Sed-Traps
https://docs.raku.org/language/regexes

Связанный контент