Мой файл содержит следующие строки
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 или какая-либо другая команда дадут этот вывод? Ищите конкретное слово, если это в гармонии, затем удаляют то слово и затем все слово в той строке.
Удалить слово 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.