Использование вырезки с непечатаемыми разделителями - PullRequest
16 голосов
/ 24 апреля 2009

Можно ли использовать обрезку и иметь непечатаемые символы в качестве разделителя? Например, я хотел бы, чтобы символ «^ A» (также обозначаемый как \ 001) был разделителем.

Ответы [ 4 ]

28 голосов
/ 24 апреля 2009

Если вы используете 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, это означает «не обрабатывать следующее, что я набираю специально». *

5 голосов
/ 24 апреля 2009

Да, это вполне возможно.

Если вы набираете текст в оболочке, нажмите ^V, а затем ^A, чтобы вставить дословный текст ^A в текущую строку, а не рассматривать его как обычную команду перехода к началу строки:

% cat -v foo
abc^Adef^Aghi
% cut -d^A -f2 foo
def
1 голос
/ 23 мая 2016

Если, например, ваш непечатаемый разделитель равен tab, что эквивалентно \t, и вы хотите найти второй или последний элемент каждой строки, разделенных табуляцией, вы можете использовать это:

cut -d $'\t' -f2- tablimited.csv
0 голосов
/ 24 апреля 2009

CTRL-V CTRL-A?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...