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.