что означает эта команда сортировки? cat temp.txt | sort -t$'\t'

что означает эта команда сортировки? cat temp.txt | sort -t$'\t'

В man-странице sort -t используется для указания разделителя полей. Однако я не знаю, что -t$'\t'означает эта форма?

решение1

Цитирование Bash ANSI-C. Если вы обернете строку таким образом $'string', она будет расширена по тем же правилам, что и строка C. В вашем случае $'t'станет просто 't', но если бы это было так, $'\t'то стало бы символом табуляции. Это немного отличается от использования двойных кавычек, поскольку "string"двойные кавычки допускают подстановку bash (например, расширение переменной)

решение2

'$' после опции -t используется для указания символа, который использует более 7 бит для своего представления. Например, для новой строки: '\n', для табуляции '\t'. Если вы сделаете это так:

sort -t '\t' 

Sort, скорее всего, выдаст сообщение об ошибке, сообщающее, что вы используете слишком много символов, поскольку программа пытается буквально прочитать «\» и «t».

Таким образом, в вашем примере обратная косая черта опущена.

То же самое происходит, например, с командой cut:

cut -d$'\t' 

Связанный контент