В преобразовании sed, как применить немного другой шаблон только для последней строки? - PullRequest
1 голос
/ 28 мая 2011

Как я могу превратить это:

aaa
bbb
ccc

в это:

aaa,
bbb,
ccc

с использованием sed?

Обратите внимание, что все строки заканчиваются запятой, кроме последней.

В моей настоящей задаче я также делаю некоторые регулярные замены в строках. Есть ли решение, которое не дублирует их?

1 Ответ

4 голосов
/ 28 мая 2011

Вы можете использовать:

sed '$q;s/$/,/'

Если вы хотите применить другое замещение в последней строке, вы все равно можете использовать адрес $:

sed '$s/$/;/;$q;s/$/,/'

Вышезаменит конец строки на ;, если это последняя строка, в противном случае он будет использовать ,.

  1. $s/$/;/ = в последней строке, замените конец строки на;
  2. $q = в последней строке, выйти
  3. s/$/,/ = заменить конец строки на ,

ПоследнийКоманда s будет выполняться для каждой строки, но не для последней строки, в которой команда q в 2. указывает ей выйти.


См .:

...