-1

简短的问题我正在使用这个正则表达式https://stackoverflow.com/a/11531819/4779063在 vi​​m 中按长度对行进行排序,但我对其进行了一些修改以使其适用于 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 文件

有任何想法吗?

4

2 回答 2

1

如果您愿意,可以尝试仅使用 vim按长度对文件进行排序:

:g/^/ s/^.*$/\=substitute(submatch(0),submatch(0),strlen(submatch(0)).'# '.submatch(0),'')/ 
:% sort! n
:% s/^\d\+# //
于 2016-07-01T01:10:43.427 回答
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]
}

.

于 2016-07-01T07:53:18.173 回答