Как удалить конкретный символ после определенного слова

[113084]Другой подход:

Вопрос 1

Это будет напечатано только в том случае, если будет определено [113542]2[113543]. Это более короткий способ написания:

Вопрос 2

Не нужно ничего добавлять, что еще не было рассмотрено.[113093].

1
24.03.2015, 22:15
2 ответа

Попробуйте:

$ echo "IBM, Inc.:APP-VM-Core:4.4.2.0:04," | sed '/^ *IBM/s/,//'
IBM Inc.:APP-VM-Core:4.4.2.0:04,

или:

$ echo "IBM, Inc.:APP-VM-Core:4.4.2.0:04," | sed 's/^\( *IBM\),/\1/'
IBM Inc.:APP-VM-Core:4.4.2.0:04,
2
27.01.2020, 23:27

Если вы пытаетесь изменить файл, вы предпочитаете использовать ex или ed, но определенно не sed. Почему бы не sed?

sed - это S tream ED itor, и вы бы изменили данные, поступающие из потока вместе с ним.

Используя ex можно сделать следующий

ex -sc '%s/IBM,/IBM/g|x' файл, в котором файл является именем вашего файла.

В качестве альтернативы. Если вы хотите удалить ведущие пробелы или вкладки, вам понадобится больше, чем ^ *. Например. Решением будет использование awk следующим образом:

awk '{sub(/^[ \t]+IBM,/,"IBM");};1' input_file > output_file

или

awk '{sub(/^[[:blank:]]*IBM,/,"IBM");};1' input_file > output_file

Mind you. ^ * не сможет обнаружить закладки ^.

Также можно использовать ex, как объяснялось ранее, но теперь включив регулярное выражение для соответствия только строке, начинающейся с пробелов, и включив шаблон IBM

ex -sc '%s/^[[:blank:]]*IBM,/IBM/g|x' input_file
1
27.01.2020, 23:27

Теги

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