Tips en Trucs 2012

Cut opdracht

De cut opdracht is handig om tekenreeksen (strings, tekst) en tekens in het algemeen te verwerken. De cut opdracht is één van de oudste Unix opdrachten, meer dan 40 jaar oud. En dat merk je. M.a.w. het werkt en gedraagt zich als een Unix opdracht. Een voorbeeld: het gebruikt IFS (Input Field Separators) om scheidingstekens tussen velden te bepalen. Bepaal de standaard IFS scheidingstekens met de opdracht:

dany@linux-bxth:~> set | grep IFS
IFS=$' \t\n'
    local IFS='
    local IFS='
    local IFS='
                    local IFS='
    local IFS='
' IFS=' ''      ''
    IFS=$s;
    local IFS='
            IFS="${COMP_WORDBREAKS//:}";
            IFS='
    local IFS='
    local IFS;
    IFS='
    local IFS;
    IFS='
    local IFS;
    IFS='
    local IFS;
    IFS='
    local IFS='
        IFS='
    ( IFS=/;

De cut opdracht toont een verticaal gedeelte van een bestand, m.a.w. enkel de opgegeven kolommen of velden. De kolommen worden geselecteerd door gebruik te maken van de standaard IFS of door zelf scheidingstekens op te geven.

Basisgebruik

cut OPTIE [BESTAND]

De meest gebruikte opties zijn:

Praktische voorbeelden

Als voorbeeldbestand gebruiken we het bestand test.txt met de volgende inhoud:
12345:Administratie:jan:jansens
67891:Personeel:stefaan:vanmaldegem
18230:Personeel:luc:vanwijnegem
62913:Verkoop:rani:de keyzer
Toon de eerste vijf tekens van elke regel:
dany@linux-bxth:~> cut -c1-5 test.txt
12345
67891
18230
62913
Dit kun je alleen gebruiken als de velden een vaste breedte hebben, om de derde kolom (gescheiden door dubbele punten) weer te geven, gebruik je:
dany@linux-bxth:~> cut -d: -f3 test.txt
jan
stefaan
luc
rani

Als je als scheidingsteken een spatie wilt gebruiken, moet je deze tussen enkele aanhalingstekens plaatsen: -d' '

Het laatste voorbeeld toont hoe je alle kolommen uitgenomen de tweede kolom kunt weergeven. Daarvoor gebruiken we de optie --complement om de uit te sluiten kolom op te geven:
dany@linux-bxth:~> cut -d: -f2 --complement test.txt
12345:jan:jansens
67891:stefaan:vanmaldegem
18230:luc:vanwijnegem
62913:rani:de keyzer
Om meerdere kolommen weer te geven (of uit te sluiten) kun je deze met een lijst in de -f optie opgeven. De onderdelen van een lijst worden met een komma gescheiden:
dany@linux-bxth:~> cut -d: -f2,4  test.txt
Administratie:jansens
Personeel:vanmaldegem
Personeel:vanwijnegem
Verkoop:de keyzer

Grep en cut video