Как разрезать первые n и последние n столбцов? Как я могу отключить первые n и последние n столбцов из файла с разделителями табуляции? Я попробовал это, чтобы сократить первый столбец. Но я не собираюсь комбинировать первый и последний n столбцов cut -f 1-10 -d "<CTR>v <TAB>" filename Ответ 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=""
Ответ 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