В 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'