2016-05-13 2 views
0

Wir können die Länge der längsten Zeile und Auftragsnummer mit dem Befehl erhalten:Wie awk in vim ausführen, um die längste Zeile und ihre Bestellnummer zu erhalten?

awk '{ print length(), NR, $0 | "sort -rn" }' /tmp/test.txt |head -n 1 

, nun mit dem Befehl vim zu öffnen /tmp/test.txt.

:!awk '{ print length(), NR, $0 | "sort -rn" }' % |head -n 1 

Press ENTER or type command to continue 
head: cannot open ‘n’ for reading: No such file or directory 
head: cannot open ‘1’ for reading: No such file or directory 
sort: fflush failed: standard output: Broken pipe 
sort: write error 

Wie es zu beheben?

+2

ich es nicht wiedergeben kann. Bitte versuchen Sie es mit 'vim -u NONE/tmp/test.txt'; Wenn das Problem behoben ist, führen Sie eine binäre Suche auf Ihren Plugins durch. Wenn es nicht behoben wird, kann es mit Ihrer Betriebssystem- oder Vim-Version zu tun haben. – Amadan

Antwort

1

Ihr Befehl ist ziemlich ineffizient. Wenn Sie awk sowieso verwenden, sollten Sie auch lassen Sie es die Länge der längsten Zeile berechnen:

awk '{ l = length($0); a = (a > l) ? a : l } END {print a}' test.txt