Jak usunąć ostatnie dwa znaki z każdej linii w pliku tekstowym, używając tylko poleceń systemu Linux?Usuwanie ostatnich dwóch znaków z każdej linii w pliku tekstowym
Również mój plik wydaje się dziwny^Ograniczniki w nim. Jakiego znaku odpowiada^A?
Jak usunąć ostatnie dwa znaki z każdej linii w pliku tekstowym, używając tylko poleceń systemu Linux?Usuwanie ostatnich dwóch znaków z każdej linii w pliku tekstowym
Również mój plik wydaje się dziwny^Ograniczniki w nim. Jakiego znaku odpowiada^A?
sed 's/..$//' filename.txt
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)
Zauważ, że musisz wpisać Ctrl-A, a nie dosłowny^i literalny A. –
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
Co jeśli chce się usunąć ostatnie 1232 znaków? – qed
Mam to: 'sed 's /. \ {1232 \} $ //' nazwa_pliku' – qed