使用带有不可打印分隔符的剪切

pac*_*man 17 linux command-line

是否可以使用剪切并具有不可打印的字符作为分隔符?例如,我想将"^ A"字符(也表示为\ 001)作为分隔符.

eph*_*ent 28

如果你正在使用Bash,

cut -d $'\001' ...
Run Code Online (Sandbox Code Playgroud)

有效(参见Bash参考手册#3.1.2.4 ANSI-C引用).

其他(更便携)选项,

cut -d `echo -e '\001'` ...

FS=`echo -e '\001'`
cut -d $FS ...
Run Code Online (Sandbox Code Playgroud)

或者使用Alnitak和etlerant提到的^ V直接插入控制字符 - 在shell命令行上,以及在vi等编辑器中,这意味着"不要处理我特意打字的下一件事".


Aln*_*tak 5

是的,这是完全可能的.

如果在shell中输入,请按^V,然后^A^A逐字插入当前行,而不是将其视为正常的'go to start of line'命令:

% cat -v foo
abc^Adef^Aghi
% cut -d^A -f2 foo
def
Run Code Online (Sandbox Code Playgroud)