Я хочу удалить 5-е слово каждой строки в файле.
Текущее содержимое файла:
File is not updated or and will be removed
System will shut down f within 10 seconds
Please save your work 55 or copy to other location
Kindly cooperate with us D
Ожидаемый результат:
File is not updated and will be removed
System will shut down within 10 seconds
Please save your work or copy to other location
Kindly cooperate with us
text-processing
sed
awk
pmaipmui
источник
источник
-f
не поддерживается в моемcut
(GNU) по крайней мере ..--complement
флаг , чтобы упростить вещи:cut --complement -d ' ' -f5
. Не забудьте перенаправить вывод в новый файл, а затемmv
поверх оригинала.awk: убрать 5-е поле
Если вы хотите сохранить файл на месте: /programming//q/16529716/7552
Вы можете просто стереть содержимое 5-го поля, но это оставляет 2 последовательных разделителя выходных полей:
источник
С помощью POSIX sed:
источник
_
а не чем-то еще:blank:
или:space:
?\(
нужна группа захвата\)
?Гленн предложил решение, которое эквивалентно
Как он и другие указали, это
Взломать, чтобы исправить третью проблему
Это по-прежнему оставит один или несколько добавленных пробелов в конце любой строки, в которой вводится пять или менее слов. Если вы можете определить слово, которое никогда не появится на входе,
справится даже с этим (но это все равно оставляет проблемы 1 и 2).
источник
Более надежный (sed принимает самый длинный шаблон и шаблон с
*
пропущенным разделением или словом в первой версии), но более длинная версияисточник
sed 's/[^[:blank:]]*//5'
sed 's/[[:blank:]*[^[:blank:]]*//5'
лучше. Очень хороший момент. Я подозревал, что sed воспринимает каждый символ как единое целое, но в качестве сущности он принимает наибольший неразбитый шаблонsed 's/[[:blank:]][^[:blank:]]*//4'
удалит 5-е поле целиком.sed 's/[[:blank:]][^[:blank:]][^[:blank:]]*//4'
, или, ж / GNU / BSD / Игрушечныеsed
s:sed -E 's/[[:blank:]][^[:blank:]]+//4'
.Perl.
источник
Другая возможность, предполагая, что GNU вырезать:
источник
Используя Perl> 5.10 (и успешно вывести все строки: 0)): -
источник