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

时间:2014-08-11 12:52:24

标签: shell cut

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

这就是我的尝试:

cut -d^A -f2-8 a.dat > b.dat

如果我的记录是这样的:

A^AB^AC^AD^AE^AF^AG^AH^A$

我的命令给出:

AB^AC^AD^AE^AF^AG^AH

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

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

2 个答案:

答案 0 :(得分:9)

^A是ASCII表a.k.a Start of Heading字符中的字符编号1。如果你正在使用bash,你可以拥有:

cut -f 2-8 -d $'\x01'

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

CTRL_A=$(printf '\x01')
cut -f 2-8 -d "$CTRL_A"

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

hexdump -C b.dat

答案 1 :(得分:0)

我无法理解您的问题,但建议您使用tr将您的Control-As更改为更可行的其他内容,然后在完成后将其更改回来:

tr '^A' ',' < yourfile | do some cutting using commas | tr ',' '^A' > newfile