Вот пример использования cut
разбиения ввода на поля с помощью пробела-разделителя и получения второго поля:
cut -f2 -d' '
Как можно определить разделитель как табуляцию, а не пробел?
решение1
Два пути:
Нажмите Ctrl+ V, а затем, Tabчтобы использовать «дословно».цитируемая вставка.
cut -f2 -d' ' infile
или напишите это так, чтобы использоватьANSI-C цитирование:
cut -f2 -d$'\t' infile
Форма $'...'
кавычек не является частью языка оболочки POSIX (еще нет), но работает как минимум в ksh, mksh, zsh и Busybox в дополнение к Bash.
решение2
По умолчанию используется вкладка.
Смотритевырезать страницу руководства.
-d delim
Use delim as the field delimiter character instead of the tab
character.
Так что вы можете просто написать
cut -f 2
решение3
awk -F '\t' '{ print $2 }' inputfile
Это извлекает второе поле, разделенное табуляцией, из каждой строки ввода из inputfile
.
решение4
В качестве альтернативы можно обернуть cut в функцию.
function getColumns ()
{
local -r delimiter="${1:?}"
local -r columns="${2:?}"
if [[ "$delimiter" == '\t' || "$delimter" == "tab" ]]; then
cut "--fields=${columns}"
return
fi
cut "--delimiter=${delimiter}" "--fields=${columns}"
}