Ответ 1
sed 's/..$//' filename.txt
Как удалить последние два символа из каждой строки в текстовом файле, используя только команды Linux?
Также в моем файле есть странные ^ Разделители. Что char соответствует ли ^ A?
sed 's/..$//' filename.txt
Второй ответ 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
(хотел добавить в качестве комментария, но он не правильно цитирует)
вы также можете использовать awk
awk '{sub(/..$/,"")}1' file
вы также можете использовать оболочку
while read -r line; do echo ${line:0:(${#line}-2)}; done<file
однако, если вы говорите о том, чтобы избавиться от новых строк DOS (т.е.\r\n), вы можете использовать команду dos2unix