Ich möchte den Vi-Editor verwenden, um mehrere Zeilen in einer Datei zu löschen. Bitte geben Sie mir eine Idee oder einen Vorschlag.
Mein Ziel ist wie folgt:
Vor:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.
.
29
30
.
.
Nach;
1
10
20
30
40
.
.
:[range]d
beispielsweise die:3,5d
Zeilen drei bis fünf (einschließlich) löschen .gsed -n '1p; 0~10p'
Antworten:
Wenn Sie meinen, Sie möchten jede 10. Zeile behalten und den Rest löschen:
Erläuterung:
%
ganze Dateinorm
Führen Sie die folgenden Befehle im "normalen Modus" aus.9dd
9 Zeilen löschenj
eine Zeile nach unten gehen (dh behalten)Hinweis: Dadurch wird die erste Zeile gelöscht.
Angepasst von http://www.rayninfo.co.uk/vimtips.html
Oder mit dem globalen Befehl:
:g/^/+ d9
Angepasst von /programming/1946738/vim-how-to-delete-every-second-row
Oder Sie könnten verwenden
awk
:quelle
{...}
. Gut zu wissen, dass du es nicht tust. Es ist der erste nicht triviale awk-Befehl, an dem ich arbeite!{ print $0 }
löscht die Zeilen, die nicht mit
0
der zweiten beginnen.quelle
2,$
die den Bereich undv/0$/d
deng!
Befehl darstellt. Wo0$
ist der reguläre Ausdruck undd
der ex-Befehl, die in allen Zeilen ausgeführt werden, die nicht übereinstimmen?