Удаление двух последних символов из каждой строки в текстовом файле - PullRequest
10 голосов
/ 08 апреля 2010

Как мне удалить последние два символа из каждой строки в текстовом файле, используя только команды Linux?

Кроме того, в моем файле содержатся странные разделители ^ A.Какому символу соответствует ^ A?

Ответы [ 3 ]

17 голосов
/ 08 апреля 2010
sed 's/..$//' filename.txt
2 голосов
/ 08 апреля 2010

Второй ответ 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

(хотел добавить в качестве комментария, но не правильно цитирует)

0 голосов
/ 08 апреля 2010

Вы также можете использовать awk

awk '{sub(/..$/,"")}1' file

Вы также можете использовать оболочку

while read -r line; do echo ${line:0:(${#line}-2)}; done<file 

однако, если вы говорите об избавлении от новых строк DOS (т.е. \ r \ n), вы можете использовать команду dos2unix

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...