programmera.net -> linux -> normal för utskrift | info@programmera.net |
Matchning av textfiler
|
På denna sida beskrivs kommandon som matchar rader i en textfil med en annan. 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:
Kommandot ovan sparar den sorterade versonen av a.txt i b.txt. [olle@dev1]$ sort a.txt > b.txt
Flagga | Betydelse | Beskrivning | ||
---|---|---|---|---|
cut -f1,3 a.txt | field | Skriv ut kolumn 1 och 3 från a.txt. | ||
cut -d"," -f2 a.txt | delimiter | Skriv ut kolumn 2, där kolumnerna separeras av kommatecken. | ||
cut -c1,3 a.txt | char | Skriv ut bokstav nummer 1 och 3 från varje rad i a.txt. | ||
cut -c2-8 a.txt | char | Skriv ut bokstäverna nummer 2 till 8 från varje rad i a.txt. | ||
cut -c17- a.txt | char | Skriv ut bokstäverna från 17 och framåt från a.txt. |
[olle@dev1]$ cat > d.txt Adam Adamson 1945 Björn Björnsson 1966 Cesar Cesarsson 1977 Ctrl+d |
[olle@dev1]$ cut -f3 d.txt 1945 1966 1977 |
[olle@dev1]$ cut -f2,3 d.txt Adamson 1945 Björnsson 1966 Cesarsson 1977 |
[olle@dev1]$ cut -c1-3 d.txt Ada Bjö Ces |
[olle@dev1]$ cut -d":" -f1 /etc/passwd root bin ... olle |
Flagga | Betydelse | Beskrivning | ||
---|---|---|---|---|
paste a.txt b.txt | Skriv ut a.txt och b.txt rad för rad separerade av tab. | |||
paste -d"," a.txt b.txt | delimiter | Skriv ut a.txt och b.txt rad för rad separerade av komma. |
[olle@dev1]$ cat > e.txt a b c Ctrl+d [olle@dev1]$ cat > f.txt 1 2 3 Ctrl+d |
[olle@dev1]$ paste e.txt f.txt a 1 b 2 c 3 |
[olle@dev1]$ paste -d"," e.txt f.txt a,1 b,2 c,3 |
Flagga | Betydelse | Beskrivning | ||
---|---|---|---|---|
join a.txt b.txt | Skriv ut a.txt och b.txt rad för rad där första kolumnen i båda filerna matchar varandra. | |||
join -t':' a.txt b.txt | Som ovan men kolumnerna i a.txt och b.txt är separerade av kolon. | |||
join -a1 a.txt b.txt | add | Skriv ut de matchande raderna plus de rader i a.txt som inte matchar någon rad från b.txt. | ||
join -v1 a.txt b.txt | Skriv ut de rader i a.txt som inte matchar någon rad i b.txt. | |||
join -o 1.2 2.5 a.txt b.txt | output | Skriv ut kolumn 2 från a.txt och kolumn 5 från b.txt från de matchande raderna. | ||
join -1 2 -2 5 a.txt b.txt | Skriv ut de rader där kolumn 2 från a.txt matchar kolumn 5 från b.txt. |
[olle@dev1]$ cat > g.txt 1 Adam 2 Bertil 3 Cesar 4 David Ctrl+d [olle@dev1]$ cat > h.txt 1 a 2 b 4 d 7 g Ctrl+d |
[olle@dev1]$ join g.txt h.txt 1 Adam a 2 Bertil b 4 David d |
[olle@dev1]$ join h.txt g.txt 1 a Adam 2 b Bertil 4 d David |
[olle@dev1]$ cat > i.txt 1 a 7 g 2 b 4 d |
[olle@dev1]$ join g.txt i.txt 1 Adam a |
[olle@dev1]$ join -a1 g.txt h.txt 1 Adam a 2 Bertil b 3 Cesar 4 David d |
[olle@dev1]$ join -v1 g.txt h.txt 3 Cesar |
[olle@dev1]$ join -o 1.2 2.2 g.txt h.txt Adam a Bertil b David d [olle@dev1]$ join -o 2.2 1.2 1.1 g.txt h.txt a Adam 1 b Bertil 2 d David 4 |