Избавление от тире в файле с помощью sed

Я хотел бы использовать команду sed, чтобы избавиться от некоторых тире в строке (внутри файла), т. е. в файле есть строка, которая говорит:

TEXT=abcdef-lalala-someText-yahoo

после выполнения sed строка должна выглядеть так:

TEXT=abcdeflalalasomeTextyahoo

спасибо заранее

18
задан Wilmer
01.05.2023 12:13 Количество просмотров материала 3031
Распечатать страницу

3 ответа

на основе ваших комментариев Nifle это ответ, пожалуй, это больше похоже на то, что вы ищете. Он будет действовать только на строки, которые содержат TEXT= следовал по 4 ' - ' сегменты текста с разделителями.

использование GNU sed (рассматривая "текст" и "yahoo" как константу)

sed -re 's/^(TEXT=[^-]+)-([^-]+)-([^-]+)-(yahoo)$//'

или, используя GNU sed (рассматривая весь текст после "=" как доступный)

sed -re 's/^(TEXT=[^-]+)-([^-]+)-([^-]+)-([^-]+)$//'

или, для переносимости posix (обрабатывая весь текст после " = " как доступный):

sed 's/^\(TEXT=[^-][^-]*\)-\([^-][^-]*\)-\([^-][^-]*\)-\([^-][^-]*\)$//'
1
отвечен Peter.O 2023-05-02 20:01

вот так:

echo "TEXT=abcdef-lalala-someText-yahoo" | sed 's/-//g'
TEXT=abcdeflalalasomeTextyahoo
3
отвечен Nifle 2023-05-02 22:18

вот мои два цента... Можно добавить соответствие (TEXT=) перед командой замены... Вот так:

sed '/TEXT=/s/-//g'

результаты будут:

echo "TEXT=abcdef-lalala-someText-yahoo" | sed '/TEXT=/s/-//g'
TEXT=abcdeflalalasomeTextyahoo

команда substitute будет выполняться только при совпадении первого предложения, в этом случае совпадение "TEXT=". Думаю, что команда будет проще и изящнее.

0
отвечен user3681552 2023-05-03 00:35

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх