简短的问题我使用这个正则表达式https://stackoverflow.com/a/11531819/4779063来按照vim中的长度对行进行排序,但是我对它进行了一些修改以使其适用于windows和gawk所以我最终得到了一些东西像这样:
vmap <Leader>su ! gawk -f "{ print length(), $0 \| \"sort -n \| cut -d\\ -f2-\"}"<CR>
但是每当我尝试使用它时它会说它可以在我的C:\ Users \ Username \ AppData \ Local \ Temp \ VIi33.tmp
中打开一个.tmp文件任何想法?
答案 0 :(得分:0)
如果您愿意,可以尝试仅使用vim 按长度对文件进行排序:
:g/^/ s/^.*$/\=substitute(submatch(0),submatch(0),strlen(submatch(0)).'# '.submatch(0),'')/
:% sort! n
:% s/^\d\+# //
答案 1 :(得分:0)
此AWK程序根据长度对记录或行(通过数组)进行排序,并按排序顺序打印出来。你能用吗?
function len_comp_func(i1,v1,i2,v2) { # define length comparison function for for
return(length(v1)-length(v2))
}
{
arr[NR]=$0 # populate array with all the records
}
END {
PROCINFO["sorted_in"] = "comp_func" # define order function
for (i in arr) # traverse in length order
print arr[i]
}