Grep: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
 
(2 mellanliggande sidversioner av samma användare visas inte)
Rad 1: Rad 1:
[[Exempel på hur man använder Grep]]
== grep - Sök efter mönster i filer ==
Kommandot `grep` används för att söka efter specifika mönster i filer i ett Unix-liknande operativsystem.


== NAME         topp ==
=== Syntax ===
        grep - skriv ut linjer som matchar mönster
grep [ALTERNATIV]... MÖNSTER [FIL]...


== SYNOPSIS         topp ==
=== Beskrivning ===
        '''grep''' [ ''ALTERNATIV'' ...] ''MÖNSTER'' [ ''FIL'' ...]
Kommandot `grep` söker efter rader som matchar ett angivet mönster i en eller flera filer. Det skriver ut de rader som matchar mönstret till standardutgången.
        '''grep''' [ ''ALTERNATIV'' ...] '''-e''' ''MÖNSTER'' ... [ ''FIL'' ...]
        '''grep''' [ ''ALTERNATIV'' ...] '''-f''' ''PATTERN_FILE'' ... [ ''FIL'' .. .]


== BESKRIVNING         ==
=== Alternativ ===
        '''grep''' söker efter ''MÖNSTER'' i varje ''FIL'' .  ''PATTERNS'' är ett eller flera
Kommandot `grep` stöder många alternativ som kan användas för att justera hur sökningen utförs och hur resultaten visas:
        mönster separerade av nyradstecken och '''grep''' skriver ut var och en
        linje som matchar ett mönster. Vanligtvis bör ''MÖNSTER citeras''
        när '''grep''' används i ett skalkommando.
        En ''FIL'' med " '''-''' " står för standardinmatning. Om ingen ''FIL'' anges,
        rekursiva sökningar undersöker arbetskatalogen och
        icke-rekursiva sökningar läser standardinmatning.


== ALTERNATIV         ==
* -A NUM, --after-context=NUM - Skriv ut NUM rader av kontext efter varje träff.
    '''Generisk programinformation'''
* -a, --text - Behandla binära filer som textfiler.
        '''--hjälp''' Skriv ut ett användningsmeddelande och avsluta.
* -B NUM, --before-context=NUM - Skriv ut NUM rader av kontext före varje träff.
* -C NUM, --context=NUM - Skriv ut NUM rader av kontext före och efter varje träff.
        '''-V''' , '''--version'''
* -c, --count - Skriv ut antalet matchande rader per fil.
              Mata ut versionsnumret för '''grep''' och avsluta.
* -D ACTION, --devices=ACTION - Hur man behandlar enheter; ACTION kan vara `read` eller `skip`.
* -d ACTION, --directories=ACTION - Hur man behandlar kataloger; ACTION kan vara `read`, `recurse` eller `skip`.
    '''Mönstersyntax'''
* -E, --extended-regexp - Tolka mönstret som ett utökat reguljärt uttryck.
        '''-E''' , '''--extended-regexp'''
* -e MÖNSTER, --regexp=MÖNSTER - Ange mönstret att söka efter.
              Tolka ''PATTERNS'' som utökade reguljära uttryck (EREs,
* -F, --fixed-strings - Tolka mönstret som en lista med fasta strängar, separerade med ny rad.
              se nedan).
* -f FIL, --file=FIL - Hämta mönster från filen FIL.
* -G, --basic-regexp - Tolka mönstret som ett grundläggande reguljärt uttryck (standard).
        '''-F''' , '''--fixed-strings'''
* -H, --with-filename - Skriv ut filnamnet före varje rad med en träff.
              Tolka ''MÖNSTER'' som fasta strängar, inte regelbundna
* -h, --no-filename - Skriv inte ut filnamnet före varje rad med en träff.
              uttryck.
* --help - Visa hjälp och avsluta.
* -I - Ignorera binära filer.
        '''-G''' , '''--basic-regexp'''
* -i, --ignore-case - Ignorera skiftlägeskänslighet vid sökning.
              Tolka ''MÖNSTER'' som grundläggande reguljära uttryck (BRE, se
* -L, --files-without-match - Skriv ut namnet på varje fil som inte innehåller några träffar.
              Nedan). Detta är standard.
* -l, --files-with-matches - Skriv ut namnet på varje fil som innehåller minst en träff.
* -m NUM, --max-count=NUM - Stoppa efter NUM träffar.
        '''-P''' , '''--perl-regexp'''
* -n, --line-number - Skriv ut radnumret före varje rad med en träff.
              Tolka ''PATTERNS'' som Perl-kompatibla reguljära uttryck
* -o, --only-matching - Skriv endast ut de delar av raderna som matchar mönstret.
              (PCRE). Det här alternativet är experimentellt när det kombineras med
* -q, --quiet, --silent - Skriv inte ut någonting, returnera endast exit-status.
              alternativet '''-z''' ( '''--null-data''' ) och '''grep -P''' kan varna för
* -R, -r, --recursive - Sök rekursivt i kataloger.
              oimplementerade funktioner.
* -s, --no-messages - Undertryck felmeddelanden om icke-existerande eller oläsliga filer.
* -v, --invert-match - Skriv ut de rader som inte matchar mönstret.
    '''Matchande kontroll'''
* -w, --word-regexp - Matcha endast hela ord.
        '''-e''' ''PATTERNS'' , '''--regexp=''' ''PATTERNS''
* -x, --line-regexp - Matcha endast hela rader.
              Använd ''PATTERNS'' som mönstret. Om detta alternativ används
* -Z, --null - Sätt null-byte som avgränsare efter filnamn.
              flera gånger eller kombineras med alternativet '''-f''' ( '''--file''' ),
              sök efter alla angivna mönster. Detta alternativ kan användas för att
              skydda ett mönster som börjar med "-".
        '''-f''' ''FIL'' , '''--fil=''' ''FIL''
              Få mönster från ''FIL'' , ett per rad. Om detta alternativ
              används flera gånger eller kombineras med alternativet '''-e'''
              ( '''--regexp''' ), sök efter alla angivna mönster. De
              tom fil innehåller noll mönster och matchar därför
              ingenting. Om ''FILE'' är '''-''' , läs mönster från standard
              inmatning.
        '''-i''' , '''--ignore-case'''
              Ignorera skiftlägesskillnader i mönster och indata, så
              att karaktärer som skiljer sig bara i fall matchar varandra.
        '''--no-ignore-case'''
              Ignorera inte skiftlägesskillnader i mönster och input
              data. Detta är standard. Det här alternativet är användbart för
              skickar till skalskript som redan använder '''-i''' , för att avbryta
              dess effekter eftersom de två alternativen åsidosätter varandra.
        '''-v''' , '''--invert-match'''
              Invertera känslan av matchning för att välja icke-matchning
              rader.
        '''-w''' , '''--ord-regexp'''
              Välj bara de rader som innehåller matchningar som bildar hela
              ord. Testet är att den matchande delsträngen måste
              antingen vara i början av raden eller föregås av en
              icke-ords ingående karaktär. På samma sätt måste det vara
              antingen i slutet av raden eller följt av ett icke-ord
              ingående karaktär. Tecken som består av ord är
              bokstäver, siffror och understreck. Detta alternativ har nr
              effekt om '''-x''' också anges.
        '''-x''' , '''--line-regexp'''
              Välj bara de matchningar som exakt matchar helheten
              linje. För ett reguljärt uttrycksmönster är detta som
              placera mönstret inom parentes och sedan omge det med '''^'''
              och '''$''' .
    '''General Output Control'''
        '''-c''' , '''--count'''
              Dämpa normal utgång; skriv istället ut ett antal matchningar
              rader för varje indatafil. Med '''-v''' , '''--invert-match'''
              alternativ (se ovan), räkna rader som inte matchar.
        '''--färg''' [ '''=''' ''NÄR'' ], '''--färg''' [ '''=''' ''NÄR'' ]
              Omge de matchade (icke-tomma) strängarna, matchande linjer,
              kontextrader, filnamn, radnummer, byteförskjutningar och
              separatorer (för fält och grupper av sammanhangslinjer) med
              escape-sekvenser för att visa dem i färg på terminalen.
              Färgerna definieras av miljövariabeln
              '''GREP_COLORS''' .  ''NÄR'' är '''aldrig''' , '''alltid''' eller '''automatiskt''' .
        '''-L''' , '''--filer-utan-matchning'''
              Dämpa normal utgång; skriv istället ut namnet på varje
              indatafil från vilken ingen utdata normalt skulle ha varit
              tryckt.
        '''-l''' , '''--filer-med-matchningar'''
              Dämpa normal utgång; skriv istället ut namnet på varje
              indatafil från vilken utdata normalt skulle ha varit
              tryckt. Skanningen av varje indatafil upphör vid första matchningen.
        '''-m''' ''NUM'' , '''--max-count=''' ''NUM''
              ​​Sluta läsa en fil efter ''NUM'' matchande rader. Om ''NUM'' är
              noll, '''grep''' slutar direkt utan att läsa indata. Ett ''NUM''
              på -1 behandlas som oändligt och '''grep''' slutar inte; detta
              är standard. Om ingången är standardinmatning från en
              vanlig fil, och ''NUM'' matchande rader matas ut, '''grep'''
              säkerställer att standardingången är positionerad till just
              efter den sista matchande raden innan du lämnar, oavsett
              förekomsten av efterföljande kontextlinjer. Detta möjliggör en
              anropsprocess för att återuppta en sökning. När '''grep''' slutar efter
                ''NUM'' matchande rader, matar den ut alla efterföljande kontextrader.
              När alternativet '''-c''' eller '''--count''' också används, gör det inte '''grep'''
              mata ut ett antal större än ''NUM'' . När alternativet '''-v''' eller
                '''--invert-match''' också används, slutar '''grep''' efter
              matar ut ''NUM'' icke-matchande rader.
        '''-o''' , '''--bara-matchande'''
              Skriv endast ut de matchade (icke-tomma) delarna av en matchning
              linje, med varje sådan del på en separat utgångslinje.
        '''-q''' , '''--tyst''' , '''--tyst'''
              Tyst; skriv inget till standardutdata. Utgång
              omedelbart med nollstatus om någon matchning hittas, till och med
              om ett fel upptäckts. Se även alternativet '''-s''' eller
                '''--no-messages .'''
        '''-s''' , '''--inga-meddelanden'''
              Undertryck felmeddelanden om obefintlig eller oläsbar
              filer.
    '''Output Line Prefix Control'''
        '''-b''' , '''--byte-offset'''
              Skriv ut den 0-baserade byteoffseten i indatafilen innan
              varje utgångsrad. Om '''-o''' ( '''--only-matching''' ) är
              specificerat, skriv ut offseten för själva matchande delen.
        '''-H''' , '''--med-filnamn'''
              Skriv ut filnamnet för varje matchning. Detta är standard
              när det finns mer än en fil att söka efter. Detta är en GNU
              förlängning.
        '''-h''' , '''--no-filnamn'''
              Undertryck prefixet av filnamn vid utdata. Detta är
              standard när det bara finns en fil (eller bara standard
              input) för att söka.
        '''--label=''' ''LABEL''
              Displayingång kommer faktiskt från standardingång som ingång
              kommer från filen ''LABEL'' . Detta kan vara användbart för kommandon
              som omvandlar en fils innehåll före sökning, t.ex.
              '''gzip -cd foo.gz | grep --label=foo -H 'något mönster'''' . Ser
              även alternativet '''-H''' .
        '''-n''' , '''--radnummer'''
              Prefix varje utdatarad med det 1-baserade radnumret
              i sin indatafil.
        '''-T''' , '''--initial-tab'''
              Se till att det första tecknet i det faktiska radens innehåll
              ligger på ett tabbstopp, så att inriktningen av tabbarna ser ut
              vanligt. Detta är användbart med alternativ som prefix deras
              utdata till det faktiska innehållet: '''-H''' , '''-n''' , och '''-b''' . För att
              förbättra sannolikheten för att rader från en enda fil kommer att göra det
              alla börjar i samma kolumn, detta orsakar också linjen
              nummer och byte offset (om sådan finns) som ska skrivas ut i en
              minsta storlek fältbredd.
        '''-Z''' , '''--null'''
              Mata ut en nollbyte (ASCII '''NUL''' -tecknet) istället för
              tecknet som normalt följer ett filnamn. För
              Exempelvis matar '''grep -lZ''' en noll byte efter varje filnamn
              istället för den vanliga nyraden. Detta alternativ gör att
              utdata entydig, även i närvaro av filnamn
              innehåller ovanliga karaktärer som nyrader. Detta alternativ
              kan användas med kommandon som '''find -print0''' , '''perl -0''' , '''sort'''
              '''-z''' och '''xargs -0''' för att bearbeta godtyckliga filnamn, till och med
              de som innehåller nyradstecken.
    '''Kontextlinjekontroll'''
        '''-A''' ''NUM'' , '''--after-context=''' ''NUM''
              ​​Skriv ut ''NUM'' rader av efterföljande kontext efter matchande rader.
              Placerar en rad som innehåller en gruppavgränsare ( '''--''' ) mellan
              sammanhängande grupper av matcher. Med alternativet '''-o''' eller
                '''--only-matching''' har detta ingen effekt och en varning
              är given.
        '''-B''' ''NUM'' , '''--before-context=''' ''NUM''
              ​​Skriv ut ''NUM'' rader av inledande sammanhang innan matchande rader.
              Placerar en rad som innehåller en gruppavgränsare ( '''--''' ) mellan
              sammanhängande grupper av matcher. Med alternativet '''-o''' eller
                '''--only-matching''' har detta ingen effekt och en varning
              är given.
        '''-C''' ''NUM'' , '''-''' ''NUM'' , '''--context=''' ''NUM''
              ​​Skriv ut ''NUM'' rader av utdatakontext. Placerar en linje
              som innehåller en gruppseparator ( '''--''' ) mellan angränsande
              grupper av matcher. Med alternativet '''-o''' eller '''--only-matching ,'''
              detta har ingen effekt och en varning ges.
        '''--group-separator=''' ''SEP''
              När '''-A''' , '''-B''' eller '''-C''' används, skriv ut ''SEP'' istället för '''--'''
              mellan grupper av linjer.
        '''--no-group-separator'''
              När '''-A''' , '''-B''' eller '''-C''' används, skriv inte ut en separator
              mellan grupper av linjer.
    '''Val av fil och katalog'''
        '''-a''' , '''--text'''
              Bearbeta en binär fil som om det vore text; detta är
              motsvarar alternativet '''--binary-files=text''' .
        '''--binära-filer=''' ''TYP''
              Om en fils data eller metadata indikerar att filen
              innehåller binär data, anta att filen är av typen
              ''TYP'' . Icke-textbytes indikerar binära data; dessa är
              antingen utdatabytes som är felaktigt kodade för
              aktuell lokal eller noll-indatabyte när alternativet '''-z''' är
              inte givit.
              Som standard är ''TYPE'' '''binär''' och '''grep''' undertrycker utdata
              efter att noll-ingången upptäcks binär data och undertrycks
              utdatarader som innehåller felaktigt kodade data. När
              viss utdata är undertryckt, '''grep''' följer alla utdata med a
              meddelande till standardfel som säger att en binär fil
              tändstickor.
              Om ''TYPE'' är '''utan-matchning''' , när '''grep''' upptäcker noll-ingång
              binära data antar det att resten av filen inte gör det
              match; detta motsvarar alternativet '''-I''' .
              Om ''TYPE'' är '''text''' bearbetar '''grep''' en binär fil som om den vore den
              var text; detta motsvarar alternativet '''-a''' .
              När ''typen'' är '''binär''' kan '''grep''' behandla icke-textbytes som rad
              terminatorer även utan alternativet '''-z''' . Detta betyder
              att välja '''binär''' kontra '''text''' kan påverka om ett mönster
              matchar en fil. Till exempel , när ''typen'' är '''binär'''
              mönster '''q$ kan''' matcha '''q''' omedelbart följt av en noll
              byte, även om detta inte matchas när ''typen'' är '''text''' .
              Omvänt, när ''typen'' är '''binär''' mönstret '''.''' (period)
              kanske inte matchar en nollbyte.
              ''Varning:'' Alternativet '''-a''' kan mata ut binärt skräp, vilket
              kan ha otäcka biverkningar om utgången är en terminal
              och om terminaldrivrutinen tolkar en del av det som
              kommandon. Å andra sidan, när man läser filer vars
              textkodningar är okända, det kan vara bra att använda '''-a''' eller
              för att ställa in '''LC_ALL='C'''' i miljön, för att hitta
              fler matcher även om matcherna är osäkra för direkt
              visa.
        '''-D''' ''ACTION'' , '''--devices=''' ''ACTION''
              Om en indatafil är en enhet, FIFO eller socket, använd ''ACTION''
              för att bearbeta den. Som standard läses ''ACTION'' ''',''' vilket betyder
              att enheter läses precis som om de vore vanliga filer.
              Om ''ACTION'' är '''hoppa över''' , hoppas enheterna över tyst.
        '''-d''' ''ACTION'' , '''--directorys=''' ''ACTION''
              Om en indatafil är en katalog, använd ''ACTION'' för att bearbeta den.
              Som standard är ''ACTION'' '''läs''' , dvs läs kataloger precis som
              om de var vanliga filer. Om ''ACTION'' är '''hoppa över''' , tyst
              hoppa över kataloger. Om ''ACTION'' är '''recurse''' , läs alla filer
              under varje katalog, rekursivt, efter symboliskt
              länkar endast om de finns på kommandoraden. Detta är
              motsvarar alternativet '''-r''' .
        '''--exclude=''' ''GLOB''
              Hoppa över alla kommandoradsfiler med ett namnsuffix som matchar
              mönstret ''GLOB'' , med hjälp av jokerteckenmatchning; ett namnsuffix
              är antingen hela namnet eller en avslutande del som börjar
              med ett snedstreck omedelbart efter ett snedstreck ( '''/''' )
              i namnet. Hoppa över valfri underfil när du söker rekursivt
              vars basnamn matchar ''GLOB'' ; basnamnet är delen
              efter sista snedstrecket. Ett mönster kan använda '''*''' , '''?''' , och '''[''' ... ''']'''
              som jokertecken, och '''\''' för att citera ett jokertecken eller omvänt snedstreck
              karaktär bokstavligen.
        '''--exclude-from=''' ''FIL''
              Hoppa över filer vars basnamn matchar något av filnamnen
              globs som läses från ''FILE'' (med hjälp av jokerteckenmatchning enligt beskrivningen
              under '''--exclude''' ).
        '''--exclude-dir=''' ''GLOB''
              Hoppa över en kommandoradskatalog med ett namnsuffix som
              matchar mönstret ''GLOB'' . När du söker rekursivt,
              hoppa över alla underkataloger vars basnamn matchar ''GLOB'' .
              Ignorera eventuella överflödiga snedstreck i ''GLOB'' .
        '''-Jag'''      bearbetar en binär fil som om den inte innehåller matchning
              data; detta motsvarar
              '''--binary-files=utan-matchningsalternativ''' .
        '''--include=''' ''GLOB''
              Sök endast efter filer vars basnamn matchar ''GLOB'' (med
              jokerteckenmatchning som beskrivs under '''--exclude''' ). Om
              motsägelsefulla '''--inkludera''' och '''--exkludera''' alternativ ges,
              den sista matchande vinner. Om nej '''--inkludera''' eller '''--exkludera'''
              alternativ matchar, en fil ingår om inte den första sådana
              alternativet är '''--inkludera''' .
        '''-r''' , '''--rekursiv'''
              Läs alla filer under varje katalog, rekursivt,
              följer endast symboliska länkar om de är på kommandot
              linje. Observera att om ingen filoperand ges, '''grep'''
              söker i arbetskatalogen. Detta motsvarar
              '''-d''' rekursalternativ.
        '''-R''' , '''--dereferens-rekursiv'''
              Läs alla filer under varje katalog, rekursivt. Följ
              alla symboliska länkar, till skillnad från '''-r''' .
    '''Andra alternativ'''
        '''--line-buffrad'''
              Använd linjebuffring vid utdata. Detta kan orsaka a
              prestationsstraff.
        '''-U''' , '''--binär'''
              Behandla filen/filerna som binära. Som standard, under MS-DOS och
              MS-Windows, '''grep''' gissar om en fil är text eller binär
              som beskrivs för alternativet '''--binary-files''' . Om '''grep'''
              bestämmer att filen är en textfil, tar den bort CR
              tecken från originalfilens innehåll (att göra
              reguljära uttryck med '''^''' och '''$''' fungerar korrekt).
              Att specificera '''-U''' åsidosätter denna gissning, vilket orsakar alla filer
              att läsas och överföras till matchningsmekanismen ordagrant;
              om filen är en textfil med CR/LF-par i slutet av
              varje rad kommer detta att orsaka vissa reguljära uttryck
              misslyckas. Det här alternativet har ingen effekt på andra plattformar än
              MS-DOS och MS-Windows.
        '''-z''' , '''--null-data'''
              Behandla in- och utdata som sekvenser av rader, var och en
              avslutas med en noll byte (ASCII NUL-tecknet)
              istället för en nyrad. Som alternativet '''-Z''' eller '''--null''' , detta
              alternativet kan användas med kommandon som '''sort -z''' för att bearbeta
              godtyckliga filnamn.


== Regular Expressions         ==
=== Exempel ===
        Ett reguljärt uttryck är ett mönster som beskriver en uppsättning av
Här är några praktiska exempel som visar hur du kan använda `grep`-kommandot:
        strängar. Reguljära uttryck konstrueras analogt med
        aritmetiska uttryck, genom att använda olika operatorer för att kombinera
        mindre uttryck.
        '''grep''' förstår tre olika versioner av reguljärt uttryck
        syntax: "basic" (BRE), "extended" (ERE) och "perl" (PCRE). I
        GNU '''grep''' , grundläggande och utökade reguljära uttryck är bara
        olika notationer för samma mönstermatchande funktionalitet.
        I andra implementeringar är grundläggande reguljära uttryck
        vanligtvis mindre kraftfull än förlängd, även om den ibland är det
        tvärtom. Följande beskrivning gäller
        utökade reguljära uttryck; skillnader för grundläggande regelbunden
        uttryck sammanfattas efteråt. Perl-kompatibel vanlig
        uttryck har olika funktionalitet och är dokumenterade i
        pcre2syntax(3) och pcre2pattern(3) , men fungerar bara om PCRE stöder
        är aktiverat.
        De grundläggande byggstenarna är de reguljära uttrycken som
        matcha ett enda tecken. De flesta tecken, inklusive alla bokstäver
        och siffror, är reguljära uttryck som matchar sig själva. Några
        meta-tecken med speciell betydelse kan citeras genom att föregå den
        med ett snedstreck.
        Perioden '''.''' matchar vilket enskilt tecken som helst. Det är ospecificerat
        om det matchar ett kodningsfel.
    '''Teckenklasser och parentesuttryck'''
        Ett ''parentesuttryck'' är en lista över tecken som omges av '''[''' och ''']''' .
        Det matchar alla enstaka tecken i den listan. Om den första
        karaktären i listan är raden '''^''' då matchar den någon
        tecken ''som inte finns'' i listan; det är ospecificerat om det matchar
        ett kodningsfel. Till exempel det reguljära uttrycket
        '''[0123456789]''' matchar vilken enskild siffra som helst.
        Inom ett parentesuttryck består ett ''intervalluttryck'' av två
        tecken separerade med bindestreck. Det matchar vilken singel som helst
        tecken som sorterar mellan de två tecknen, inklusive, med hjälp av
        lokalens sorteringssekvens och teckenuppsättning. Till exempel,
        i standardläget C motsvarar '''[ad] [abcd]''' . Många
        lokaler sorterar tecken i ordboksordning, och i dessa språk
        '''[ad]''' är vanligtvis inte likvärdig med '''[abcd]''' ; det kan vara
        motsvarande '''[aBbCcDd]''' , till exempel. För att få det traditionella
        tolkning av parentesuttryck kan du använda C-lokalen
        genom att sätta miljövariabeln '''LC_ALL''' till värdet '''C''' .
        Slutligen är vissa namngivna teckenklasser fördefinierade
        inom parentes uttryck, enligt följande. Deras namn är själv
        förklarande, och de är '''[:alnum:]''' , '''[:alfa:]''' , '''[:blank:]''' ,
        '''[:cntrl:]''' , '''[:siffra:]''' , '''[:graf:]''' , '''[:nedre:]''' , '''[:print :]''' , '''[:punct:]''' ,
        '''[:mellanslag:]''' , '''[:upper:]''' och '''[:xdigit:]''' . Till exempel '''<nowiki>[[:alnum:]]</nowiki>'''
        betyder teckenklassen av siffror och bokstäver i den aktuella
        plats. I C locale och ASCII teckenuppsättning kodning, detta
        är samma som '''[0-9A-Za-z]''' . (Observera att parenteserna i dessa
        klassnamn är en del av de symboliska namnen och måste inkluderas
        utöver parenteserna som avgränsar parentesuttrycket.)
        De flesta meta-tecken förlorar sin speciella betydelse inom parentes
        uttryck. För att inkludera en bokstavlig ''']''' placera den först i listan.
        På samma sätt, för att inkludera en bokstavlig '''^''' placera den var som helst utom först.
        Slutligen, för att inkludera en bokstavlig '''-''' placera den sist.
    '''Förankring'''
        The caret '''^''' och dollartecknet '''$''' är meta-tecken som
        matcha den tomma strängen i början och slutet av en
        linje.
    '''Omvänt snedstreck och specialuttryck'''
        Symbolerna '''\<''' och '''\>''' matchar den tomma strängen vid
        början och slutet av ett ord. Symbolen '''\b''' matchar den tomma
        sträng i kanten av ett ord, och '''\B''' matchar den tomma strängen
        förutsatt att det ''inte'' är på kanten av ett ord. Symbolen '''\w''' är a
        synonym för '''[_[:alnum:]]''' och '''\W''' är en synonym för '''[^_[:alnum:]]''' .
    '''Upprepning'''
        Ett reguljärt uttryck kan följas av en av flera upprepningar
        operatörer:
        '''?'''      Det föregående objektet är valfritt och matchas högst en gång.
        '''*'''      Föregående post kommer att matchas noll eller fler gånger.
        '''+'''      Föregående objekt kommer att matchas en eller flera gånger.
        '''{''' ''n'' '''}'''    Det föregående objektet matchas exakt ''n'' gånger.
        '''{''' ''n'' ''',}'''    Det föregående objektet matchas ''n'' eller flera gånger.
        '''{,''' ''m'' '''}'''    Föregående post matchas högst ''m'' gånger. Det här är en
              GNU förlängning.
        '''{''' ''n'' ''',''' ''m'' '''}'''  Det föregående objektet matchas minst ''n'' gånger, men inte
              mer än ''m'' gånger.
    '''Sammankoppling'''
        Två reguljära uttryck kan vara sammanlänkade; det resulterande
        reguljära uttryck matchar alla strängar som bildas genom att sammanfoga två
        delsträngar som matchar de sammanlänkade uttrycken.
    '''Alternering'''
        Två reguljära uttryck kan förenas med infixoperatorn '''|''' ;
        det resulterande reguljära uttrycket matchar vilken sträng som helst
        antingen alternativt uttryck.
    '''Företräde'''
        Upprepning har företräde framför sammanlänkning, som i sin tur
        har företräde framför alternering. Ett helt uttryck kan vara
        inom parentes för att åsidosätta dessa prioritetsregler och
        bilda ett underuttryck.
    '''Bakåtreferenser och underuttryck'''
        Bakåtreferensen '''\''' ''n'' , där ''n'' är en enkelsiffra, matchar
        delsträng som tidigare matchats av den ''n:'' te parentesen
        underuttryck av det reguljära uttrycket.
    '''Grundläggande vs utökade reguljära uttryck'''
        I grundläggande reguljära uttryck är meta-tecken '''?''' , '''+''' , '''{''' , '''|''' , '''(''' ,
        och ''')''' förlorar sin speciella betydelse; använd istället det omvända snedstrecket
        versioner '''\?''' , '''\+''' , '''\{''' , '''\|''' , '''\(''' , och '''\)''' .


== EXIT STATUS   ==
* För att söka efter ett mönster i en fil:
        Normalt är utgångsstatusen 0 om en linje väljs, 1 om nej
<code>
        rader valdes och 2 om ett fel inträffade. Men om
grep "mönster" fil.txt
        '''-q''' eller '''--quiet''' eller '''--silent''' används och en linje väljs, den
</code>
        utgångsstatus är 0 även om ett fel uppstod.


== MILJÖ     ==
* För att söka efter ett mönster i flera filer:
        Beteendet för '''grep''' påverkas av följande miljö
  <code>
        variabler.
  grep "mönster" fil1.txt fil2.txt
  </code>
        Lokalen för kategorin '''LC_''' ''foo'' specificeras genom att undersöka
        tre miljövariabler '''LC_ALL''' , '''LC_''' ''foo'' , '''LANG''' , i den ordningen.
        Den första av dessa variabler som ställs in anger lokalen.
        Till exempel, om '''LC_ALL''' inte är inställt, men '''LC_MESSAGES''' är satt till
        '''pt_BR''' , används den brasilianska portugisiska språkversionen för
        kategorin '''LC_MESSAGES''' . C-lokalen används om ingen av dessa
        miljövariabler ställs in, om lokalkatalogen inte är det
        installerat, eller om '''grep''' inte kompilerades med det nationella språket
        stöd (NLS). Skalkommandot '''locale -a''' listar lokaler som
        finns för närvarande tillgängliga.
        '''GREP_COLORS'''
              Styr hur alternativet '''--color''' markerar utdata. Dess
              värde är en kolonseparerad lista över funktioner som
              standard till
              '''ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36''' med
                '''rv''' och '''ne''' booleska funktioner utelämnade (dvs. falskt).
              De funktioner som stöds är följande.
              '''sl='''    SGR-delsträng för hela valda linjer (dvs.
                      matchande rader när kommandoradsalternativet '''-v är'''
                      utelämnade eller icke-matchande rader när '''-v''' är
                      specificerad). Om dock den booleska '''rv-''' kapaciteten
                      och kommandoradsalternativet '''-v är båda specificerade,'''
                      det gäller istället för kontextmatchande linjer. De
                      default är tom (dvs terminalens standard
                      färgpar).
              '''cx='''    SGR-delsträng för hela kontextlinjer (dvs icke-
                      matchande rader när kommandoradsalternativet '''-v är'''
                      utelämnade eller matchande rader när '''-v''' är specificerad).
                      Om däremot den booleska '''rv-''' förmågan och '''-v'''
                      kommandoradsalternativ är båda specificerade, det gäller
                      till valda icke-matchande rader istället. De
                      default är tom (dvs terminalens standard
                      färgpar).
              '''rv'''      booleskt värde som vänder (byter) betydelsen av
                      funktionerna '''sl=''' och '''cx=''' när kommandot '''-v-'''
                      linjealternativet anges. Standardinställningen är falsk
                      (dvs. förmågan utelämnas).
              '''mt=01;31'''
                      SGR-delsträng för att matcha icke-tom text i någon
                      matchande linje (dvs en vald linje när '''-v'''
                      kommandoradsalternativet utelämnas, eller en kontextrad
                      när '''-v''' är specificerad). Att ställa in detta är likvärdigt
                      att ställa in både '''ms=''' och '''mc=''' samtidigt till samma
                      värde. Standard är en fet röd textförgrund
                      över den aktuella linjens bakgrund.
              '''ms=01;31'''
                      SGR-delsträng för att matcha icke-tom text i en
                      vald rad. (Detta används endast när '''-v'''
                      kommandoradsalternativet utelämnas.) Effekten av
                      '''sl=''' (eller '''cx=''' om '''rv''' ) förblir aktiv när
                      detta sätter igång. Standard är en fet röd text
                      förgrunden över den aktuella linjens bakgrund.
   
              '''mc=01;31'''
                      SGR-delsträng för att matcha icke-tom text i en
                      kontextrad. (Detta används endast när '''-v'''
                      kommandoradsalternativet anges.) Effekten av
                      förmågan cx '''=''' (eller '''sl=''' om '''rv''' ) förblir aktiv
                      när detta startar. Standard är en fet röd text
                      förgrunden över den aktuella linjens bakgrund.
              '''fn=35'''  SGR-delsträng för filnamn med prefix för något innehåll
                      linje. Standard är en magentafärgad textförgrund
                      över terminalens standardbakgrund.
   
              '''ln=32'''  SGR-delsträng för radnummer som föregår någon
                      innehållsraden. Standard är en grön text
                      förgrunden över terminalens standardbakgrund.
              '''bn=32'''  SGR-delsträng för byteförskjutningar som prefixar någon
                      innehållsraden. Standard är en grön text
                      förgrunden över terminalens standardbakgrund.
              '''se=36'''  SGR-delsträng för separatorer som infogas
                      mellan valda radfält ( ''':''' ), mellan sammanhang
                      linjefält, ( '''-''' ), och mellan grupper av angränsande
                      rader när kontext som inte är noll anges ( '''--''' ). De
                      standard är en cyan textförgrund över
                      terminalens standardbakgrund.
              '''ne'''      booleskt värde som förhindrar rensning till slutet av
                      rad med radera rad (EL) till höger ( '''\33[K''' ) vardera
                      gång ett färgat föremål slutar. Detta behövs på
                      terminaler där EL inte stöds. Det är
                      annars användbar på terminaler för vilka
                      '''back_color_erase''' ( '''fvt''' ) boolesk terminfo-förmåga
                      gäller inte när de valda markeringsfärgerna gör det
                      inte påverkar bakgrunden, eller när EL är för långsam
                      eller orsakar för mycket flimmer. Standardinställningen är falsk
                      (dvs. förmågan utelämnas).
              Observera att booleska kapaciteter har ingen '''=''' ... del. De
              utelämnas (dvs. falskt) som standard och blir sanna när
              specificerad.
              Se avsnittet Select Graphic Rendition (SGR) i
              dokumentation av textterminalen som används för
              tillåtna värden och deras betydelse som karaktär
              attribut. Dessa delsträngvärden är heltal i
              decimalrepresentation och kan sättas samman med
              semikolon.  '''grep''' tar hand om att sätta ihop resultatet till
              en fullständig SGR-sekvens ( '''\33[''' ... '''m''' ). Gemensamma värderingar till
              sammanfoga inkluderar '''1''' för fetstil, '''4''' för understrykning, '''5''' för
              blinka, '''7''' för invers, '''39''' för standardförgrundsfärg, '''30'''
              till '''37''' för förgrundsfärger, '''90''' till '''97''' för 16-färgsläge
              förgrundsfärger, '''38;5;0''' till '''38;5;255''' för 88-färger och
              256-färgsläges förgrundsfärger, '''49''' som standard
              bakgrundsfärg, '''40''' till '''47''' för bakgrundsfärger, '''100''' till
                '''107''' för 16-färgsläges bakgrundsfärger och '''48;5;0''' till
                '''48;5;255''' för 88-färgslägen och 256-färgslägen bakgrund
              färger.
   
        '''LC_ALL''' , '''LC_COLLATE''' , '''LANG'''
              Dessa variabler anger språket för '''LC_COLLATE'''
              kategori, som bestämmer sorteringssekvensen som används för
              tolka intervalluttryck som '''[az]''' .
        '''LC_ALL''' , '''LC_CTYPE''' , '''LANG'''
              Dessa variabler anger lokalen för '''LC_CTYPE'''
              kategori, som bestämmer typen av tecken, t.ex.
              vilka tecken är blanksteg. Även denna kategori
              bestämmer teckenkodningen, det vill säga om text
              är kodad i UTF-8, ASCII eller någon annan kodning. I
              C- eller POSIX-språket är alla tecken kodade som en
              en byte och varje byte är ett giltigt tecken.
        '''LC_ALL''' , '''LC_MESSAGES''' , '''LANG'''
              Dessa variabler anger språket för kategorin '''LC_MESSAGES'''
              , som bestämmer språket som '''grep''' använder för
              meddelanden. Standardinställningen för C använder amerikansk engelska
              meddelanden.
        '''POSIXLY_CORRECT'''
              Om inställt, fungerar '''grep''' som POSIX kräver; annars, '''grep'''
              beter sig mer som andra GNU-program. POSIX kräver det
              alternativ som följer filnamn måste behandlas som fil
              namn; som standard är sådana alternativ permuterade till framsidan
              i operandlistan och behandlas som alternativ. Också,
              POSIX kräver att okända alternativ diagnostiseras som
              ”olagliga”, men eftersom de egentligen inte strider mot lagen
              standarden är att diagnostisera dem som "ogiltiga".


== NOTERA   ==
* För att ignorera skiftlägeskänslighet vid sökning:
        Denna man-sida underhålls endast på rätt sätt; hela dokumentationen
<code>
        är ofta mer aktuell.
grep -i "mönster" fil.txt
</code>


== COPYRIGHT   ==
* För att visa radnummer för varje träff:
        Copyright 1998-2000, 2002, 2005-2023 Free Software Foundation,
<code>
        Inc.
grep -n "mönster" fil.txt
   
  </code>
        Detta är fri programvara; se källan för kopieringsvillkor.
        Det finns INGEN garanti; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR
        ETT SÄRSKILT SYFTE.


== BUGS   ==
* För att söka rekursivt i kataloger:
    '''Rapportera buggar'''
<code>
        E-posta felrapporter till felrapporteringsadressen ⟨bug-
grep -r "mönster" katalog/
        grep@gnu.org⟩. Ett e-postarkiv
</code>
        ⟨ <nowiki>https://lists.gnu.org/mailman/listinfo/bug-grep</nowiki> ⟩ och en bugg
        tracker ⟨ <nowiki>https://debbugs.gnu.org/cgi/pkgreport.cgi?package=grep</nowiki>
        finns tillgängliga.
    '''Kända fel'''
        Stora upprepningar i '''{''' ''n'' ''',''' ''m'' '''}''' -konstruktionen kan göra att '''grep'''
        använda mycket minne. Dessutom vissa andra obskyra regelbundna
        uttryck kräver exponentiell tid och rum, och kan orsaka
        '''grep''' för att få slut på minne.
        Bakåtreferenser är mycket långsamma och kan kräva exponentiell tid.


== EXEMPEL     ==
* För att visa antalet matchande rader:
        Följande exempel visar platsen och innehållet för eventuella
<code>
        rad som innehåller "f" och slutar på ".c", inom alla filer i
  grep -c "mönster" fil.txt
        aktuell katalog vars namn innehåller "g" och slutar på ".h". De
  </code>
        '''Alternativet -n''' matar ut radnummer, argumentet '''--''' behandlar expansioner
        av "*g*.h" som börjar med "-" som filnamn inte alternativ, och
        tom fil /dev/null gör att filnamn matas ut även om bara
        ett filnamn råkar ha formen "*g*.h".
   
          $ '''grep''' -n -- 'f.*\.c$' *g*.h /dev/null
          argmatch.h:1:/* definitioner och prototyper för argmatch.c
   
        Den enda raden som matchar är rad 1 i argmatch.h. Anteckna det
        Syntaxen för reguljära uttryck som används i mönstret skiljer sig från
        den globbing-syntax som skalet använder för att matcha filnamn.


== SE ÄVEN   ==
* För att skriva ut filnamn för varje träff:
    '''Regular Manual Pages'''
  <code>
        '''awk''' (1), cmp(1) , diff(1) , find(1) , '''perl''' (1), sed(1) , sort(1) ,
grep -H "mönster" fil.txt
        xargs(1) , read(2) , pcre2( 3) , pcre2syntax(3) , pcre2pattern(3) ,
  </code>
        terminfo(5) , glob(7) , regex(7)
   
    '''Fullständig dokumentation'''
        En komplett manual ⟨ <nowiki>https://www.gnu.org/software/grep/manual/</nowiki> ⟩ är
        tillgängliga. Om '''info-''' och '''grep''' -programmen är korrekt installerade
        på din webbplats, kommandot
   
              '''info grep'''
        bör ge dig tillgång till hela manualen.


== KOLOFON     ==
* För att skriva ut kontext före och efter varje träff:
        Den här sidan är en del av ''GNU grep'' (filsökning med reguljära uttryck
<code>
        verktyg) projekt. Information om projektet finns på
grep -C 2 "mönster" fil.txt
        ⟨ <nowiki>https://www.gnu.org/software/grep/</nowiki> . Om du har en felrapport
</code>
        för denna manualsida, skicka den till bug-grep@gnu.org. Den här sidan var
 
        hämtat från projektets uppströms Git-förråd
* För att endast visa de delar av raderna som matchar mönstret:
        ⟨<nowiki>git://git.savannah.gnu.org/grep.git⟩</nowiki> den 2023-12-22. (Vid den
<code>
        tid, datumet för den senaste commit som hittades i
grep -o "mönster" fil.txt
        repository var 2023-09-14.) Om du upptäcker någon rendering
</code>
        problem i den här HTML-versionen av sidan, eller så tror du det
 
        är en bättre eller mer uppdaterad källa för sidan, eller så har du
=== Skillnader mellan macOS och Linux ===
        korrigeringar eller förbättringar av informationen i denna KOLOFON
Det finns några viktiga skillnader att tänka på när man använder `grep`-kommandot på macOS jämfört med Linux:
        (som ''inte'' är en del av den ursprungliga manualsidan), skicka ett mail till
 
        man-pages@man7.org
* Standardinstallationer: På de flesta Linux-distributioner är `grep` en del av GNU coreutils, medan macOS använder BSD-versionen av `grep`. Detta innebär att vissa alternativ och beteenden kan skilja sig åt.
   
* Alternativ och funktioner: GNU `grep` (Linux) har fler alternativ och funktioner jämfört med BSD `grep` (macOS). Till exempel kan vissa avancerade alternativ vara specifika för GNU `grep`.
GNU grep 3.11.21-102b-dirty 2019-12-29                        ''GREP'' (1)
 
[[Kategori:Linux Kommando]]
Här är några exempel som visar skillnaderna:
 
* På Linux kan du använda `grep --color` för att markera matchande text med färg:
<code>
grep --color "mönster" fil.txt
</code>
Detta alternativ kanske inte är tillgängligt på macOS.
 
* På Linux kan du använda `grep -P` för att använda Perl-kompatibla reguljära uttryck:
<code>
grep -P "mönster" fil.txt
</code>
Detta alternativ kanske inte är tillgängligt på macOS.
 
Det är alltid bra att konsultera `man`-sidan för `grep` på din specifika plattform för att se vilka alternativ och funktioner som är tillgängliga.
 
=== Felsökning ===
Om du får ett felmeddelande när du använder `grep`, kontrollera följande:
 
* Att filen du försöker läsa faktiskt existerar.
* Att du har rättigheter att läsa filen.
* Att syntaxen för ditt kommando är korrekt. Kontrollera att du använder rätt alternativ och parametrar.
 
=== Se även ===
* [[egrep]] - Utökat grep med stöd för reguljära uttryck.
* [[fgrep]] - Fasta grep för att söka efter fasta strängar.
* [[awk]] - Ett språk för mönstermatchning och textbehandling.
* [[sed]] - Stream editor för att filtrera och transformera text.
 
=== Källor ===
* [https://www.gnu.org/software/grep/manual/grep.html GNU grep manual]
 
= Sidslut =
 
Det här är en maskinöversättning av linux kommando manualen 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/
<BR><BR>Tack till [https://datorhjalp.se Datorhjälp i Stockholm] som har sponsrat Linux.se med webserver.
 
[[Kategori:Linuxkommandon]]

Nuvarande version från 1 september 2024 kl. 18.39

grep - Sök efter mönster i filer

Kommandot `grep` används för att söka efter specifika mönster i filer i ett Unix-liknande operativsystem.

Syntax

grep [ALTERNATIV]... MÖNSTER [FIL]...

Beskrivning

Kommandot `grep` söker efter rader som matchar ett angivet mönster i en eller flera filer. Det skriver ut de rader som matchar mönstret till standardutgången.

Alternativ

Kommandot `grep` stöder många alternativ som kan användas för att justera hur sökningen utförs och hur resultaten visas:

  • -A NUM, --after-context=NUM - Skriv ut NUM rader av kontext efter varje träff.
  • -a, --text - Behandla binära filer som textfiler.
  • -B NUM, --before-context=NUM - Skriv ut NUM rader av kontext före varje träff.
  • -C NUM, --context=NUM - Skriv ut NUM rader av kontext före och efter varje träff.
  • -c, --count - Skriv ut antalet matchande rader per fil.
  • -D ACTION, --devices=ACTION - Hur man behandlar enheter; ACTION kan vara `read` eller `skip`.
  • -d ACTION, --directories=ACTION - Hur man behandlar kataloger; ACTION kan vara `read`, `recurse` eller `skip`.
  • -E, --extended-regexp - Tolka mönstret som ett utökat reguljärt uttryck.
  • -e MÖNSTER, --regexp=MÖNSTER - Ange mönstret att söka efter.
  • -F, --fixed-strings - Tolka mönstret som en lista med fasta strängar, separerade med ny rad.
  • -f FIL, --file=FIL - Hämta mönster från filen FIL.
  • -G, --basic-regexp - Tolka mönstret som ett grundläggande reguljärt uttryck (standard).
  • -H, --with-filename - Skriv ut filnamnet före varje rad med en träff.
  • -h, --no-filename - Skriv inte ut filnamnet före varje rad med en träff.
  • --help - Visa hjälp och avsluta.
  • -I - Ignorera binära filer.
  • -i, --ignore-case - Ignorera skiftlägeskänslighet vid sökning.
  • -L, --files-without-match - Skriv ut namnet på varje fil som inte innehåller några träffar.
  • -l, --files-with-matches - Skriv ut namnet på varje fil som innehåller minst en träff.
  • -m NUM, --max-count=NUM - Stoppa efter NUM träffar.
  • -n, --line-number - Skriv ut radnumret före varje rad med en träff.
  • -o, --only-matching - Skriv endast ut de delar av raderna som matchar mönstret.
  • -q, --quiet, --silent - Skriv inte ut någonting, returnera endast exit-status.
  • -R, -r, --recursive - Sök rekursivt i kataloger.
  • -s, --no-messages - Undertryck felmeddelanden om icke-existerande eller oläsliga filer.
  • -v, --invert-match - Skriv ut de rader som inte matchar mönstret.
  • -w, --word-regexp - Matcha endast hela ord.
  • -x, --line-regexp - Matcha endast hela rader.
  • -Z, --null - Sätt null-byte som avgränsare efter filnamn.

Exempel

Här är några praktiska exempel som visar hur du kan använda `grep`-kommandot:

  • För att söka efter ett mönster i en fil:

grep "mönster" fil.txt

  • För att söka efter ett mönster i flera filer:

grep "mönster" fil1.txt fil2.txt

  • För att ignorera skiftlägeskänslighet vid sökning:

grep -i "mönster" fil.txt

  • För att visa radnummer för varje träff:

grep -n "mönster" fil.txt

  • För att söka rekursivt i kataloger:

grep -r "mönster" katalog/

  • För att visa antalet matchande rader:

grep -c "mönster" fil.txt

  • För att skriva ut filnamn för varje träff:

grep -H "mönster" fil.txt

  • För att skriva ut kontext före och efter varje träff:

grep -C 2 "mönster" fil.txt

  • För att endast visa de delar av raderna som matchar mönstret:

grep -o "mönster" fil.txt

Skillnader mellan macOS och Linux

Det finns några viktiga skillnader att tänka på när man använder `grep`-kommandot på macOS jämfört med Linux:

  • Standardinstallationer: På de flesta Linux-distributioner är `grep` en del av GNU coreutils, medan macOS använder BSD-versionen av `grep`. Detta innebär att vissa alternativ och beteenden kan skilja sig åt.
  • Alternativ och funktioner: GNU `grep` (Linux) har fler alternativ och funktioner jämfört med BSD `grep` (macOS). Till exempel kan vissa avancerade alternativ vara specifika för GNU `grep`.

Här är några exempel som visar skillnaderna:

  • På Linux kan du använda `grep --color` för att markera matchande text med färg:

grep --color "mönster" fil.txt

Detta alternativ kanske inte är tillgängligt på macOS.
  • På Linux kan du använda `grep -P` för att använda Perl-kompatibla reguljära uttryck:

grep -P "mönster" fil.txt

Detta alternativ kanske inte är tillgängligt på macOS.

Det är alltid bra att konsultera `man`-sidan för `grep` på din specifika plattform för att se vilka alternativ och funktioner som är tillgängliga.

Felsökning

Om du får ett felmeddelande när du använder `grep`, kontrollera följande:

  • Att filen du försöker läsa faktiskt existerar.
  • Att du har rättigheter att läsa filen.
  • Att syntaxen för ditt kommando är korrekt. Kontrollera att du använder rätt alternativ och parametrar.

Se även

  • egrep - Utökat grep med stöd för reguljära uttryck.
  • fgrep - Fasta grep för att söka efter fasta strängar.
  • awk - Ett språk för mönstermatchning och textbehandling.
  • sed - Stream editor för att filtrera och transformera text.

Källor

Sidslut

Det här är en maskinöversättning av linux kommando manualen 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 i Stockholm som har sponsrat Linux.se med webserver.