使用分隔符Control-A剪切命令

bla*_*mba 2 shell cut

我正在尝试使用带有分隔符Control A的cut命令从file1到file2获取一些列.

这是我试过的:

cut -d^A -f2-8 a.dat > b.dat
Run Code Online (Sandbox Code Playgroud)

如果我的记录是这样的:

A^AB^AC^AD^AE^AF^AG^AH^A$
Run Code Online (Sandbox Code Playgroud)

我的命令给出:

AB^AC^AD^AE^AF^AG^AH
Run Code Online (Sandbox Code Playgroud)

我的命令错了还是我以错误的方式划分了分隔符?

因此它将Control-A的A留在了起点.

kon*_*box 11

^A是ASCII表中的字符编号1,也就是Start of Heading字符.如果你正在使用bash,你可以这样:

cut -f 2-8 -d $'\x01'
Run Code Online (Sandbox Code Playgroud)

或者使用printf(可以内置或外部二进制):

CTRL_A=$(printf '\x01')
cut -f 2-8 -d "$CTRL_A"
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下方式验证输出hexdump:

hexdump -C b.dat
Run Code Online (Sandbox Code Playgroud)

  • 无需知道Control-A的ASCII值; `-d $'\ cA'`应该也可以. (3认同)