|
|
Transformation av textfiler
Kommando | | Exempel | | Beskrivning |
sort | | sort a.txt | | Skriver ut a.txt med alla rader sorterade alfabetiskt. |
uniq | | uniq a.txt | | Skriver ut alla unika rader i a.txt. |
nl | | nl a.txt | | Skriver ut raderna i a.txt med radnummer. |
wc | | wc -w a.txt | | Räknar antalet ord (word count) i a.txt. |
fmt | | fmt -w50 a.txt | | Skriver ut a.txt formatterad så att varje rad blir 50 tecken lång. |
tr | | tr 'a-z' 'A-Z' < a.txt | | Skriver ut a.txt med alla små bokstäver utbytta mot stora. |
|
På denna sida beskrivs kommandon som transformerar på textfiler. Ett gemensamt drag för dessa kommandon är att de inte förändrar den fil de använder sig av, de skriver bara ut något på skärmen. Om du vill spara t. ex. en sorterad fil använder du högerpilen (större än) för att få resultatet att hamna i en ny fil:
[olle@dev1]$ sort a.txt > b.txt
| Kommandot ovan sparar den sorterade versonen av a.txt i b.txt.
sort
Flagga | | Betydelse | | Beskrivning |
sort -i a.txt | | ignore | | Ignorerar alla bokstäver utanför ASCII-området. |
sort -n a.txt | | numerical | | Sorterar numeriskt. |
sort -r a.txt | | reverse | | Sorterar i bakvänd ordning. |
Sort sorterar raderna i en fil i alfabetisk ordning. Ofta vill man istället sortera i numerisk ordning. För att demonstrera skapar jag en fil:
[olle@dev1]$ cat > x.txt
a
b
c
1
2
3
10
11
|
Om vi nu sorterar denna fil sker följande:
[olle@dev1]$ sort x.txt
1
10
11
2
3
a
b
c
|
Vi kan sortera i numerisk ordning med flaggan -n:
[olle@dev1]$ sort -n x.txt
a
b
c
1
2
3
10
11
|
uniq
Flagga | | Betydelse | | Beskrivning |
uniq -c a.txt | | count | | Skriver ut alla unika rader med en siffra framför som indikerar antal förekomster av raden. |
uniq -d a.txt | | duplicated | | Skriver bara ut de rader som förekommer mer är en gång. |
uniq -i a.txt | | ignore case | | Tar inte hänsyn till stora och små bokstäver. |
Kommandot är står för unique och skriver ut alla unika rader från en fil. Alla dubletter tas alltså bort. OBS! Fungerar bara när filen är sorterad.
[olle@dev1]$ uniq -c c.txt
1 hej alla
1 glada
1 katter
|
Om vi nu lägger till en kopia av sista raden:
[olle@dev1]$ cat >> c.txt
katter
Ctrl+d
|
Nu kastar uniq bort den dubletta raden men visar med siffran 2 att det finns 2 st.:
[olle@dev1]$ uniq -c c.txt
1 hej alla
1 glada
2 katter
|
Nu lägger vi till en ny rad:
[olle@dev1]$ cat >> c.txt
glada
Ctrl+d
|
Filen ser nu ut såhär:
[olle@dev1]$ cat c.txt
hej alla
glada
katter
katter
glada
|
Filen är alltså inte sorterad, därför kommer uniq att misslyckas med att kasta den andra förekomsten av glada.
[olle@dev1]$ uniq c.txt
hej alla
glada
katter
glada
|
nl
Flagga | | Betydelse | | Beskrivning |
nl -i2 a.txt | | increment | | Ändra inkrementeringen till 2 (default 1). |
nl -v2 a.txt | | | | Ändra startnumret till 2(default 1). |
nl -s"," a.txt | | | | Ändra tecknet mellan siffran och raden till komma (default mellanslag). |
nl -nrn a.txt | | right | | Flyttar siffran till höger (default). |
nl -nln a.txt | | left | | Flyttar siffran till vänster. |
nl -nrz a.txt | | zero | | Lägger till inledande nollor i siffran. |
Detta kommando står för number lines och numrerar raderna i filen. Här ser du ett exempel:
[olle@dev1]$ nl c.txt
1 hej alla
2 glada
3 katter
|
wc
Flagga | | Betydelse | | Beskrivning |
wc -c a.txt | | char | | Räknar tecken i a.txt. |
wc -l a.txt | | line | | Räknar rader i a.txt. |
wc -w a.txt | | word | | Räknar ord i a.txt. |
Kommandot betyder word count men räknar egentligen rader,ord och tecken.
[olle@dev1]$ wc c.txt
3 4 22 c.txt
|
Om du bara vill se hur många ord filen innehåller:
[olle@dev1]$ wc -w c.txt
4 c.txt
|
Om du vill undvika att filnamnet kommer upp i utskriften kan du använda pipe:
[olle@dev1]$ cat c.txt | wc -w
4
|
fmt
Flagga | | Betydelse | | Beskrivning |
fmt -w10 a.txt | | width | | Skriver ut a.txt med en bredd på 10 tecken. |
fmt -s a.txt | | split only | | Delar långa rader men lägger inte ihop korta rader till längre. |
fmt -u a.txt | | uniform spacing | | Ser till att det är endast ett mellanslag mellan orden och två mellan meningar. |
Kommandot betyder format och används för att få paragraferna i en fil att skrivas med en viss radlängd. Defaultlängd är 75 tecken. Korta rader klistras ihop till långa så att raden blir 75 tecken lång. Rader som börjar med mellanslag klistras inte ihop, ty de tolkas som en andningspaus i texten. En tom rad markerar en ny paragraf och klisras inte ihop med raden ovan.
[olle@dev1]$ fmt c.txt
hej alla glada katter
|
tr
Flagga | | Betydelse | | Beskrivning |
cat a.txt | tr -d '\n' | | delete | | Raderar alla radbrytningar. |
Kommandot står för translate översätter tecken. tr är ett specialfall av sed, som klarar att substituera hela ord. Det speciella med tr är att man inte kan specifiera en fil på vanligt sätt utan måste använda pipe eller liknande:
[olle@dev1]$ cat c.txt | tr [:lower:] [:upper:]
HEJ ALLA
GLADA
KATTER
|
|
| |
|