Поисковое слово Unix в строке и если это там затем, удаляет от того слова до конца строки

Мой файл содержит следующие строки

File.txt

Unix is good
Linux and unix is different? 
Linux is also good,  then what about unix? 

Здесь я хочу вывод

(1st line blank) 
Linix and
Linux is also good,  then what about

Здесь команда vi или какая-либо другая команда дадут этот вывод? Ищите конкретное слово, если это в гармонии, затем удаляют то слово и затем все слово в той строке.

0
задан 17 July 2019 в 11:39

1 ответ

Удалить слово unix и все слова, которые следуют за ним на строке:

$ sed 's/[uU]nix.*//' File.txt

Linux and 
Linux is also good,  then what about 

s показывает команду замены. В этой команде sed соответствует regex [uU]nix.* и замены это с пустой строкой. [uU]nix соответствия также Unix или unix. .* соответствия все, что следует.

Изменения

Следующее также удалит любые пробелы, который предшествует unix:

sed 's/ *[uU]nix.*//' File.txt

Следующее удалит не, просто очищает, которые предшествуют unix но вкладки или любой другой пробел, которые предшествуют unix:

sed 's/[[:space:]]*[uU]nix.*//' File.txt

[:space:] соответствия любой пробел и unicode-безопасны.

Следующее удаляет предыдущий пробел, но будет также соответствовать любой капитализации unix такой как Unix, uNix, uNIX, и т.д.:

sed 's/[[:space:]]*unix.*//I' File.txt

I говорит sed соответствовать нечувствительным к регистру способом. Поскольку это - расширение GNU, эта версия команды не будет портативной к MacOS или BSD.

1
ответ дан 23 October 2019 в 23:31

Другие вопросы по тегам:

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