Можно ли использовать обрезку и иметь непечатаемые символы в качестве разделителя? Например, я хотел бы, чтобы символ «^ A» (также обозначаемый как \ 001) был разделителем.
Если вы используете 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, это означает «не обрабатывать следующее, что я набираю специально». *
Да, это вполне возможно.
Если вы набираете текст в оболочке, нажмите ^V, а затем ^A, чтобы вставить дословный текст ^A в текущую строку, а не рассматривать его как обычную команду перехода к началу строки:
^V
^A
% cat -v foo abc^Adef^Aghi % cut -d^A -f2 foo def
Если, например, ваш непечатаемый разделитель равен tab, что эквивалентно \t, и вы хотите найти второй или последний элемент каждой строки, разделенных табуляцией, вы можете использовать это:
tab
\t
cut -d $'\t' -f2- tablimited.csv
CTRL-V CTRL-A?