Подтвердить что ты не робот

Как разрезать первые n и последние n столбцов?

Как я могу отключить первые n и последние n столбцов из файла с разделителями табуляции?

Я попробовал это, чтобы сократить первый столбец. Но я не собираюсь комбинировать первый и последний n столбцов

cut -f 1-10 -d "<CTR>v <TAB>" filename
4b9b3361

Ответ 1

Вырезание может принимать несколько диапазонов в -f:

Столбцы до 4 и от 7 до:

cut -f -4,7 -

или для полей 1,2,5,6 и от 10:

cut -f 1,2,5,6,10 -

и т.д.

Ответ 2

Чтобы использовать AWK для отключения первого и последнего полей:

awk '{$1 = ""; $NF = ""; print}' inputfile

К сожалению, это оставляет разделители полей, поэтому

aaa bbb ccc

становится

[space]bbb[space]

Для этого используйте ответ kurumi, который не оставит лишних пробелов, но таким образом, который соответствует вашим требованиям:

awk '{delim = ""; for (i=2;i<=NF-1;i++) {printf delim "%s", $i; delim = OFS}; printf "\n"}' inputfile

Это также устраняет пару проблем в этом ответе.

Чтобы обобщить это:

awk -v skipstart=1 -v skipend=1 '{delim = ""; for (i=skipstart+1;i<=NF-skipend;i++) {printf delim "%s", $i; delim = OFS}; printf "\n"}' inputfile

Затем вы можете изменить количество полей, чтобы пропустить в начале или конце, изменив назначения переменных в начале команды.

Ответ 3

Вы можете использовать Bash для этого:

while read -a cols; do echo ${cols[@]:0:1} ${cols[@]:1,-1}; done < file.txt

Ответ 4

вы можете использовать awk, например, отключить 1-й, 2-й и 3-й столбцы

awk '{for(i=3;i<=NF-3;i++} print $i}' file

если у вас есть язык программирования, такой как Ruby (1.9 +)

$ ruby -F"\t" -ane 'print $F[2..-3].join("\t")' file

Ответ 5

Попробуйте следующее:

echo a#b#c | awk -F"#" '{$1 = ""; $NF = ""; print}' OFS=""