从文本文件中的每一行中删除最后两个字符

时间:2010-04-08 03:23:22

标签: linux

如何仅使用Linux命令从文本文件中的每一行中删除最后两个字符?

此外,我的文件似乎有奇怪的^ A分隔符。 ^ A对应的char是什么?

3 个答案:

答案 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命令