Как удалить символ с начальными и конечными пробелами? - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть файл, содержащий символы с начальными и конечными пробелами, и я хотел бы просто удалить этот символ.

Пока что следующие символы работают с начальными пробелами, пока двоеточие представляет символ, который нужно удалить:

grep -v '^\s*;$' "input_file" > "output_file".tmp
mv "output_file".tmp "input_file"

Теперь я хотел бы удалить символ, когда есть пробелы.

Предположим, у меня есть файл, подобный этому:

Some Text
; 
;
Some Text again
;
Some Text once again

Я хочу егобыть таким:

Some Text
Some Text again
Some Text once again

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете сделать это с sed тривиальным способом, например,

$ sed '/^\s*;\s*$/d' file
Some Text
Some Text again
Some Text once again

Объяснение

Используя sed общую форму удаления sed '/regex/d' для удаления строк в файле, соответствующих регулярное выражение .Выше регулярное выражение - это:

  • ^ привязка начала регулярного выражения в начале строки;
  • \s* соответствует нулю или большему количеству пробелов;
  • ; соответствует точка с запятой ;
  • \s*$ соответствует пробелу ноль или больше до конца строки;

В совокупности регулярное выражение удалит любую строку в файле, содержащую только точку с запятой и пробел.

Чтобы изменить файл "на месте", добавьте -iи для создания резервной копии исходного файла в file.bak используйте форму -i.bak.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...