uniq(1p)

Från Wiki.linux.se -Linux wikipedia på Svenska.
Hoppa till navigering Hoppa till sök


PROLOG

Denna manualsida är en del av POSIX Programmer's Manual. Linux-implementationen av detta gränssnitt kan skilja sig åt (se motsvarande Linux-manualsida för detaljer om Linux-beteende), eller så kanske gränssnittet inte är implementerat på Linux.

NAMN

uniq — rapportera eller filtrera bort upprepade rader i en fil

SYNOPSIS

uniq [-c|-d|-u] [-f fält] [-s tecken] [indatafil [utdatafil]]

BESKRIVNING

Verktyget uniq ska läsa en indatafil, jämföra intilliggande rader och skriva en kopia av varje inmatad rad till utdata. Den andra och efterföljande kopior av upprepade intilliggande indata­rader ska inte skrivas. Det avslutande radbrytningstecknet (<newline>) på varje rad i indata ska ignoreras vid jämförelser.

Upprepade rader i indata upptäcks inte om de inte ligger intill varandra.

FLAGGOR

Verktyget uniq ska följa POSIX.1-2017, Base Definitions, avsnitt 12.2, Utility Syntax Guidelines, förutom att + kan kännas igen som en flaggavgränsare likaväl som -.

Följande flaggor ska stödjas:

-c

Föregå varje utdatarad med en räknare som anger hur många gånger raden förekom i indata.

-d

Undertryck skrivning av rader som inte är upprepade i indata.

-f fält

Ignorera de första fält fälten på varje inmatad rad vid jämförelser, där fält är ett positivt decimalt heltal. Ett fält är den maximala sträng som matchas av det grundläggande reguljära uttrycket:
[[:blank:]]*[^[:blank:]]*
Om flaggargumentet fält anger fler fält än vad som finns på en inmatad rad, ska en tom sträng användas för jämförelse.

-s tecken

Ignorera de första tecken tecknen vid jämförelser, där tecken ska vara ett positivt decimalt heltal. Om detta anges tillsammans med flaggan -f, ska de första tecken tecknen efter de första fält fälten ignoreras. Om flaggargumentet tecken anger fler tecken än vad som återstår på en inmatad rad, ska en tom sträng användas för jämförelse.

-u

Undertryck skrivning av rader som är upprepade i indata.

OPERANDER

Följande operander ska stödjas:

indatafil

En sökväg till indatafilen. Om operanden indatafil inte anges, eller om indatafil är -, ska standard indata användas.

utdatafil

En sökväg till utdatafilen. Om operanden utdatafil inte anges, ska standard utdata användas. Resultaten är ospecificerade om filen som anges av utdatafil är samma fil som anges av indatafil.

STANDARD INDATA

Standard indata ska endast användas om ingen operand för indatafil anges eller om indatafil är -. Se avsnittet INDATAFILER.

INDATAFILER

Indatafilen ska vara en textfil.

MILJÖVARIABLER

Följande miljövariabler ska påverka körningen av uniq:

LANG

Tillhandahåller ett standardvärde för internationaliseringsvariabler som är odefinierade eller tomma. Se POSIX.1-2017, Base Definitions, avsnitt 8.2, Internationalization Variables, för prioritetsordningen mellan de internationaliseringsvariabler som används för att bestämma värdena för språkområdeskategorier.

LC_ALL

Om variabeln är satt till en icke-tom sträng, åsidosätter den värdena för alla andra internationaliseringsvariabler.

LC_CTYPE

Bestämmer språkområdet för tolkning av byteföljder av textdata som tecken (till exempel enkelbyte- i stället för flerbyte­tecken i argument och indatafiler) och vilka tecken som utgör ett blanktecken (<blank>) i aktuellt språkområde.

LC_MESSAGES

Bestämmer vilket språkområde som ska användas för att påverka format och innehåll i diagnostiska meddelanden som skrivs till standard fel.

NLSPATH

Bestämmer platsen för meddelandekataloger vid behandling av LC_MESSAGES.

ASYNKRONA HÄNDELSER

Standard.

STANDARD UTDATA

Standard utdata ska användas om ingen operand för utdatafil anges, och ska användas om operanden utdatafil är - och implementationen behandlar - som standard utdata. I annat fall ska standard utdata inte användas. Se avsnittet UTDATAFILER.

STANDARD FEL

Standard fel ska endast användas för diagnostiska meddelanden.

UTDATAFILER

Om flaggan -c anges ska utdatafilen vara tom eller varje rad ha formen:

"%d %s", <antal dubbletter>, <rad>

I annat fall ska utdatafilen vara tom eller varje rad ha formen:

"%s", <rad>

UTVIDGAD BESKRIVNING

Ingen.

SLUTSTATUS

Följande slutvärden ska returneras:

0

Verktyget kördes utan fel.

>0

Ett fel inträffade.

KONSEKVENSER AV FEL

Standard.

Följande avsnitt är informativa.

ANVÄNDNING I PROGRAM

Om sorteringsordningen i aktuellt språkområde har en total ordning för alla tecken, kan verktyget sort användas för att göra upprepade rader intilliggande i indatafilen. Om sorteringsordningen inte har en total ordning för alla tecken bör sort ändå göra detta, men det kanske inte sker. För att säkerställa att alla dubblettrader elimineras, och att utdata sorteras enligt sorteringsordningen i aktuellt språkområde, bör program använda:

LC_ALL=C sort -u | sort

i stället för:

sort | uniq

För att ta bort dubblettrader baserat på om de sorteras som likvärdiga i stället för om de är identiska, bör program använda:

sort -u

i stället för:

sort | uniq

När uniq används för att behandla sökvägar rekommenderas att LC_ALL, eller åtminstone LC_CTYPE och LC_COLLATE, sätts till POSIX eller C i miljön. Sökvägar kan innehålla byteföljder som inte bildar giltiga tecken i vissa språkområden, och i sådana fall skulle verktygets beteende vara odefinierat. I POSIX-språkområdet är varje byte ett giltigt enkelbyte­tecken, och därmed undviks detta problem.

EXEMPEL

Följande indatafil (men vänsterjusterad) användes för en serie tester av uniq:

#01 foo0 bar0 foo1 bar1
#02 bar0 foo1 bar1 foo1
#03 foo0 bar0 foo1 bar1
#04
#05 foo0 bar0 foo1 bar1
#06 foo0 bar0 foo1 bar1
#07 bar0 foo1 bar1 foo0

Det som följer är en serie testkörningar av verktyget uniq som använder en blandning av uniq-flaggor mot indatafilen. Dessa tester verifierar betydelsen av intilliggande. Verktyget uniq betraktar indata som en följd av strängar avgränsade med \n. För den fält:e medlemmen i följden tolkar uniq därför unika eller upprepade intilliggande rader strikt relativt medlemmen fält+1.

Exempel 1

Det första exemplet testar räkningsflaggan och jämför varje rad i indatafilen med början från det andra fältet:

uniq -c -f 1 uniq_0I.t
    1 #01 foo0 bar0 foo1 bar1
    1 #02 bar0 foo1 bar1 foo1
    1 #03 foo0 bar0 foo1 bar1
    1 #04
    2 #05 foo0 bar0 foo1 bar1
    1 #07 bar0 foo1 bar1 foo0

Siffran 2 före den femte utdataraden betyder att verktyget uniq upptäckte ett par upprepade rader. Med den givna indatan kan detta endast vara sant när uniq körs med flaggan -f 1 (vilket gör att uniq ignorerar det första fältet på varje inmatad rad).

Exempel 2

Det andra exemplet testar flaggan för att undertrycka unika rader och jämför varje rad i indatafilen med början från det andra fältet:

uniq -d -f 1 uniq_0I.t
#05 foo0 bar0 foo1 bar1

Exempel 3

Detta test undertrycker upprepade rader och jämför varje rad i indatafilen med början från det andra fältet:

uniq -u -f 1 uniq_0I.t
#01 foo0 bar0 foo1 bar1
#02 bar0 foo1 bar1 foo1
#03 foo0 bar0 foo1 bar1
#04
#07 bar0 foo1 bar1 foo0

Exempel 4

Detta undertrycker unika rader och jämför varje rad i indatafilen med början från det tredje tecknet:

uniq -d -s 2 uniq_0I.t

I det sista exemplet hittade verktyget uniq ingen indata som matchade kriterierna ovan.

BAKGRUND OCH MOTIVERING

Vissa historiska implementationer har begränsat rader till 1080 byte i längd, vilket inte uppfyller den underförstådda gränsen {LINE_MAX}.

Tidigare versioner av denna standard tillät flaggorna - nummer och + nummer. Dessa flaggor specificeras inte längre av POSIX.1-2008 men kan finnas i vissa implementationer.

FRAMTIDA INRIKTNING

Ingen.

SE ÄVEN

comm(1p), sort(1p)

POSIX.1-2017, Base Definitions, Chapter 8, Environment Variables, Section 12.2, Utility Syntax Guidelines

COPYRIGHT

Delar av denna text är återgivna och reproducerade i elektronisk form från IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 av Institute of Electrical and Electronics Engineers, Inc och The Open Group. Vid eventuell avvikelse mellan denna version och den ursprungliga standarden från IEEE och The Open Group är den ursprungliga standarden från IEEE och The Open Group det avgörande dokumentet. Originalstandarden kan erhållas online på:

http://www.opengroup.org/unix/online.html

Typografiska fel eller formateringsfel som förekommer på denna sida har sannolikt uppstått vid konverteringen av källfilerna till man-sideformat. För att rapportera sådana fel, se:

https://www.kernel.org/doc/man-pages/reporting_bugs.html

Sidor som hänvisar till denna sida

comm(1p), join(1p), sort(1p)

Sidslut

Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/uniq.1p.html Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp hemma som har sponsrat Linux.se med webbhotell.