awk + ​​如何在文件中追加列表

awk + ​​如何在文件中追加列表

我的文件中有以下列表

更多文件.ex

efifc1a
hygg4a
hdy5d


nhdw4s
wesf3a
fjfhyr



jfhg
gsfar

如何在第一個清單之後附加任何第二個清單以及在第二個清單之後附加任何第三個清單如下:

efifc1a   nhdw4s     jfhg
hygg4a    wesf3a     gsfar
hdy5d     fjfhyr

答案1

怎麼樣

awk '
  BEGIN {FS="\n"; RS="\n\n+"}
  {for (i=1;i<=NF;i++) a[i] = a[i] == ""? $i : a[i]"\t"$i; next}
  END {for (i in a) print a[i]}
' file.ex

測試:

awk '
>   BEGIN {FS="\n"; RS="\n\n+"}
>   {for (i=1;i<=NF;i++) a[i] = a[i] == ""? $i : a[i]"\t"$i; next}
>   END {for (i in a) print a[i]}
> ' file.ex
efifc1a nhdw4s  jfhg
hygg4a  wesf3a  gsfar
hdy5d   fjfhyr  

如果你不堅持使用 awk,你可以使用autogen的columns指令transpose這裡描述的命令轉置行和列例如

columns -c3 < file.ex | tr -s ' ' '\t' | transpose -t

答案2

awk如果您接受臨時文件,則可以使用和分兩步驟進行paste

n=$(awk '{ print $0 > NR; close(NR) } END { print NR }' RS= file.ex)
paste $(seq $n)

或作為一句單行:

paste $(seq $(awk '{ print $0 > NR; close(NR) } END { print NR }' RS= file.ex))

兩種情況下的輸出:

efifc1a nhdw4s  jfhg
hygg4a  wesf3a  gsfar
hdy5d   fjfhyr  

請注意,這會在當前目錄中建立編號文件,因此請注意不要覆蓋其他文件。

相關內容