Удаление двух последних символов из каждой строки в текстовом файле

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

Также в моем файле есть странные ^ Разделители. Что char соответствует ли ^ A?

Ответ 1

sed 's/..$//' filename.txt

Ответ 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

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

Ответ 3

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

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

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

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

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