Скажем, у вас есть файл с разделителями с разделителями, который выглядит следующим образом:
temp.txt
поле1 поле2 поле3 поле4 поле5 поле6
поле1 поле2 поле3 поле4 поле5 поле6
поле1 поле2 поле3 поле4 поле5 поле6
выполнение следующего удалит поля 3 и 4 и выведет их в конец строки.
awk '{print $1"\t"$2"\t"substr($0, index($0,$5))}' temp.txt
поле1 поле2 поле5 поле6
поле1 поле2 поле5 поле6
поле1 поле2 поле5 поле6
Мои примеры печатаются на стандартный вывод.
> newFile
отправит стандартный вывод в новый файл, а >> newFile
добавит в новый файл.
Так что вы можете использовать следующее:
awk '{print $1"\t"$2"\t"substr($0, index($0,$5))}' temp.txt > newFile.txt
некоторые поспорят за сокращение
cut -f1,2,5- temp.txt
, которые выдают одинаковый результат, и cut отлично подходят для простоты, но не обрабатывают несовместимые разделители. Например, смесь разных пробелов. Тем не менее, в этом случае сокращение может быть то, что вы после.
Вы также можете выполнить это в perl, python, ruby и многих других, но вот самое простое решение awk
.