2010-04-08 13 views

risposta

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

Che cosa succede se si vuole rimuovere le ultime 1232 caratteri? – qed

+4

Provalo: 'sed 's /. \ {1232 \} $ //' nomefile' – qed

2

Seconda risposta di BenV. Tuttavia è possibile fare in modo che si rimuove solo^A da:

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

In aggiunta a ciò, per scoprire cosa^A è, ho fatto la seguente:

% 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 

(voluto aggiungere come un commento, ma non lo fa citando correttamente)

+1

Nota che devi digitare Ctrl-A, non un letterale^e un letterale A. –

0

è anche possibile usare awk

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

è anche possibile utilizzare la shell

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

se si sta parlando di sbarazzarsi di nuove righe DOS (cioè \ r \ n), è possibile utilizzare il comando dos2unix

Problemi correlati