如何仅使用Linux命令从文本文件中的每一行中删除最后两个字符?
此外,我的文件似乎有奇怪的^ A分隔符。 ^ A对应的char是什么?
答案 0 :(得分:17)
sed 's/..$//' filename.txt
答案 1 :(得分:2)
第二个BenV的回答。但是,您可以确保只删除^ A:
sed 's/^A^A$//' <file>
除此之外,为了找出^ A是什么,我做了以下几点:
% echo -n '^A' |od -x
0000000 0001
0000001
% ascii 0x01
ASCII 0/1 is decimal 001, hex 01, octal 001, bits 00000001: called ^A, SOH
Official name: Start Of Heading
(想要添加为评论,但它没有正确引用)
答案 2 :(得分:0)
你也可以使用awk
awk '{sub(/..$/,"")}1' file
你也可以使用shell
while read -r line; do echo ${line:0:(${#line}-2)}; done<file
但是,如果你正在谈论摆脱DOS换行符(即\ r \ n),你可以使用dos2unix
命令