Мне нужно удалить только третье место в моем коде Perl - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть файл с несколькими пробелами, и я заменяю пробелы только одним пробелом, используя:

system "sed -i -e 's/[[:space:]]\\+/ /g' /home/donovan/Documents/NWPMIK.txt";

Как теперь я могу пойти и удалить любые пробелы после третьего пробела?

Ответы [ 2 ]

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

Для этого вы можете использовать функцию автоматического разделения perl:

perl -lane 'push @F, join("", splice(@F,3)); print join " ", @F'

Пример:

% echo  'abc def ghi jkl mno pqr' | perl -lane 'push @F, join("", splice(@F,3)); print join " ", @F'
abc def ghi jklmnopqr
0 голосов
/ 04 декабря 2018

Этот perl on-liner удалит все пробелы после 3-го пробела.На самом деле он заменяет каждую последовательность не менее чем на 3 пробела всего на 3 пробела и записывает результаты в новый файл:

perl -pe 's/\s{3,}/   /g' /home/donovan/Documents/NWPMIK.txt > /home/donovan/Documents/NWPMIK_new.txt

Если вы хотите обновить файл на месте, то:

perl -pi -e 's/\s{3,}/   /g' /home/donovan/Documents/NWPMIK.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...