Что означает '\t' с разделителем 'табуляция' с 'cut' в BASH

Эта проблема, скорее всего, связана с тем, что apkрепозитории не обновляются.

У меня работает нормально.

monitor:~# apk search lighttpd
lighttpd-mod_auth-1.4.45-r1
acf-lighttpd-0.6.0-r2
lighttpd-mod_webdav-1.4.45-r1
lighttpd-1.4.45-r1
lighttpd-doc-1.4.45-r1
lighttpd-dbg-1.4.45-r1
monitor:~# apk add lighttpd
(1/10) Installing libev (4.24-r0)
(2/10) Installing libintl (0.19.8.1-r1)
(3/10) Installing libmount (2.28.2-r2)
(4/10) Installing glib (2.52.1-r0)
(5/10) Installing gamin (0.1.10-r10)
(6/10) Installing db (5.3.28-r0)
(7/10) Installing libsasl (2.1.26-r10)
....

Попробуйте сначала с apk update.

0
30.06.2019, 10:27
1 ответ

Символ горизонтальной табуляции — это символ, который по умолчанию переводит курсор на следующий кратный восьми пробелов при выводе.

Пример:

$ printf '1234567*1234567*\na\thello\tthere\n'
1234567*1234567*
a       hello   there

Как вы можете видеть выше, для каждого символа табуляции курсор перенаправляется на следующий кратный восьми пробелов.

Символ табуляции записывается как \tна языке программирования C. Печать строки, содержащей \tс printfв оболочке или с printf()в C (и во многих других местах ), приводит к появлению символа горизонтальной табуляции вместо двух символов \и t..

В оболочке bash$'...'— это специальная «экранирующая строка C». В нем escape-последовательности, такие как\t(для табуляции )или\n(для новой строки ), обрабатываются так же, как printf()в языке C. Это описано в руководстве bashв разделе "ЦИТАТЫ".

С помощью cut -d $'\t'вы указываете cutиспользовать табуляцию в качестве разделителя при вырезании полей входных данных. Тем не менее, это разделитель по умолчанию , который cutбудет использовать, если вы вообще не используете -d, поэтому -d $'\t'не нужен в вашей команде.

2
28.01.2020, 02:30

Теги

Похожие вопросы