Можно ли использовать вырез и иметь непечатаемые символы в качестве разделителя? Например, я хотел бы, чтобы символы "^ A" (также представленные как \001) были разделителем.
Использование разреза с непечатаемыми разделителями
Ответ 1
Если вы используете Bash,
cut -d $'\001' ...
работает (см. Bash Справочное руководство № 3.1.2.4 Котировка ANSI-C).
Другие (более портативные) опции,
cut -d `echo -e '\001'` ...
FS=`echo -e '\001'`
cut -d $FS ...
или вставляя управляющий символ напрямую, используя ^ V, как упоминалось Alnitak и etlerant, в командной строке оболочки, а в редакторах, таких как vi, это означает, что "не обрабатывайте следующее, что я печатаю специально".
Ответ 2
Да, это вполне возможно.
Если вы вводите текст в оболочку, нажмите ^V
, а затем ^A
, чтобы вставить ^A
verbatim в текущей строке, вместо того, чтобы обработать ее как обычную команду "перейти к началу строки":
% cat -v foo
abc^Adef^Aghi
% cut -d^A -f2 foo
def
Ответ 3
CTRL-V CTRL-A?
Ответ 4
Если, например, вы непечатаете разделитель tab
, который эквивалентен \t
, и вы хотите найти второй для конечного элемента каждой строки, разделенный вкладкой, вы можете использовать это:
cut -d $'\t' -f2- tablimited.csv