Slik fjerner du like linjer i VI
Vi er en kraftig kommandolinje tekst editor innfødt til Unix. Selv om det ikke er mulig å fjerne dupliserte linjer med tekst med innfødte vi kommandoer, er det mulig å gjøre det ved hjelp opprinnelige Unix kommandoer og skallskript inne redaktøren.
Bruksanvisning
Bruksanvisning
1 Lag en sikkerhetskopi av filen.
:w doc.bkup
2 Hvis det er akseptabelt å sortere oppføringene i tekstfilen, først bruke sort kommandoen:
:1,$!sort
Denne kommandoen sier "bruke sort kommandoen Unix på linje 1 til slutten av filen."
3 Bruk Uniq kommandoen Unix å fjerne dupliserte linjer.
:1,$!uniq
Denne kommandoen sier "bruke Unix Uniq kommando for å fjerne dupliserte linjer fra linje 1 til slutten av filen."
Den uniq kommandoen fungerer bare på dupliserte linjer som er ved siden av hverandre og ikke har noen tomme linjer mellom dem.
4 Vet at hvis du ikke kan sortere filen, må du bruke en awk skript. Awk er en Unix tekst-manipulasjon verktøyet. Når den brukes med vi, vil det utføre avanserte oppgaver som vi alene ikke kan gjøre.
Kopier følgende skript i et tekstdokument og lagre det med navnet dup.sh i samme katalog som tekstdokumentet.
#!/bin/bash
awk '!($0 in a) {a[$0];print}'
Dette skriptet sier "finne hverandre unik linje og skrive den ut."
5 Fra Unix kommandolinjen, gjør dup.sh skriptet kjørbar med følgende kommando:
chmod +x dup.sh
6 Fjern nonconsecutive dupliserte linjer fra innsiden vi med følgende kommando:
:1,$!./dup.sh
Denne kommandoen sier "kjør dup.sh skriptet fra linje 1 til slutten av filen."
7 Lagre filen med kommandoen
: W.
Hint
- Du kan kombinere sortere og Uniq kommandoer ved hjelp slags -u.You kan slette nonconsecutive linjer fra kommandolinjen med kommandoen "awk '($ 0 i a) {a [$ 0]; print}! Sort.txt> sort2.txt ". Filen sort2.txt vil holde de unike oppføringer.