У меня есть файл, и я хочу внести в него следующие изменения:
Заменить n последовательных пробелов на n-1 пробелов.
n
n-1
Пример:
Вход:
a b c e fg j ij k
Выход:
ab c e fgj ijk
Как мне это сделать?
Вы можете сделать это в sed как:
sed
sed -r -i 's/ ( *)/\1/g' in
Используемое регулярное выражение / ( *)/ ищет пробел, за которым следует ноль или более пробелов.Он запоминает ноль или более пробелов и заменяет все пробелы запомненной частью.
/ ( *)/
s/ ( *)/$1/g
То есть замените пробел, за которым следует любое количество (включая 0) пробелов, последним числом пробелов.По сути, мы сопоставляем / +/ во время захвата / */.
/ +/
/ */