Awk + Нужно печатать все (все поля для отдыха), кроме $1 и $2

У меня есть следующий файл, и мне нужно распечатать все, кроме $1 и $2, awk

Файл:

INFORMATION DATA 12 33 55 33 66 43 
INFORMATION DATA 45 76 44 66 77 33 
INFORMATION DATA 77 83 56 77 88 22
...

желаемый вывод:

 12 33 55 33 66 43 
 45 76 44 66 77 33 
 77 83 56 77 88 22
...

Ответ 1

Ну, учитывая ваши данные, сокращение должно быть достаточным:

cut -d\  -f3- infile

Ответ 2

$ cat t
INFORMATION DATA 12 33 55 33 66 43
INFORMATION DATA 45 76 44 66 77 33
INFORMATION DATA 77 83 56 77 88 22

$ awk '{for (i = 3; i <= NF; i++) printf $i " "; print ""}' t 
12 33 55 33 66 43 
45 76 44 66 77 33 
77 83 56 77 88 22 

Ответ 3

Хотя он добавляет дополнительное пространство в начале каждой строки по сравнению с ожидаемым результатом yael, здесь представлено более короткое и простое решение на основе awk, чем ранее предлагаемые:

awk '{$1=$2=""; print}'

или даже:

awk '{$1=$2=""}1'

Ответ 4

Ответ danbens оставляет пробел в конце результирующей строки. поэтому правильный способ сделать это:

awk '{for (i=3; i<NF; i++) printf $i " "; print $NF}' filename

Ответ 5

Если первые два слова не меняются, возможно, самое простое:

awk -F 'INFORMATION DATA ' '{print $2}' t

Ответ 6

Здесь другое решение awk, более гибкое, чем cut, и короче, чем другие awk. Предполагая, что ваши разделители являются одиночными пробелами (при необходимости измените регулярное выражение, если они не указаны):

awk --posix '{sub(/([^ ]* ){2}/, ""); print}'

Ответ 7

Если Perl является опцией:

perl -lane 'splice @F,0,2; print join " ",@F' file

Эти параметры командной строки используются:
-n перемещаться по каждой строке входного файла, не печатать автоматически -l удаляет новые строки перед обработкой и затем добавляет их обратно. -a режим автосброса - разделение входных строк на массив @F. По умолчанию разделение на пробелы
-e выполнить код perl

splice @F,0,2 чисто удаляет столбцы 0 и 1 из массива @F join " ",@F объединяет элементы массива @F, используя пространство между каждым элементом

Изменение входных файлов csv:

perl -F, -lane 'splice @F,0,2; print join " ",@F' file

В этом случае используется разделитель полей -F с запятой