2010-04-08 19 views

Odpowiedz

15
sed 's/..$//' filename.txt 
+0

Co jeśli chce się usunąć ostatnie 1232 znaków? – qed

+4

Mam to: 'sed 's /. \ {1232 \} $ //' nazwa_pliku' – qed

2

Druga odpowiedź BenV. Jednak można mieć pewność, że tylko usunięcie^A przez:

sed 's/^A^A$//' <file> 

Poza tym, aby dowiedzieć się, co^A to, zrobiłem co następuje:

% 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 

(chciałem dodać jako komentarz, ale to nie robi cytowanie prawidłowo)

+1

Zauważ, że musisz wpisać Ctrl-A, a nie dosłowny^i literalny A. –

0

można również użyć awk

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

można również użyć powłoki

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

jednak jeśli mówimy o pozbyciu nowej linii DOS (tj \ r \ n), można użyć dos2unix komenda

Powiązane problemy