我正在尝试使用带有分隔符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留在了起点。
答案 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