【问题标题】:How to convert row to column on specific condition using awk?如何使用awk在特定条件下将行转换为列?
【发布时间】:2022-08-04 16:49:02
【问题描述】:

我有一个文件,而我想在特定条件下从行转换为列。

输入文件:

cat f
\"0/35\",\"0eij8401c
\"0/35\",\"59ij41015
\"0/35\",\"21ij3e01c
\"0/35\",\"dbije401b
\"1/35\",\"dbij8a015
\"1/35\",\"67ijb9011
\"1/35\",\"b5ije001b
\"1/35\",\"bdij3701d
\"2/35\",\"abij3b011
\"2/35\",\"7fij70018
\"2/35\",\"77ijf9010
\"2/35\",\"e5ij64015
\"3/35\",\"59ij41015
\"3/35\",\"f6ijae01e
\"3/35\",\"c4ij5801c
\"3/35\",\"dbij98012
\"4/35\",\"edij6801e
\"4/35\",\"pdij6801e
\"4/35\",\"kdij6801e
\"4/35\",\"8cij57018

预期输出:

0eij8401c
dbij8a015
abij3b011
59ij41015
edij6801e
59ij41015
67ijb9011
7fij70018
f6ijae01e
pdij6801e
21ij3e01c
b5ije001b
77ijf9010
c4ij5801c
kdij6801e
dbije401b
bdij3701d
e5ij64015
dbij98012
8cij57018

我尝试了 awk 和 paste 的组合,试图用 awk 命令实现两者。 这就是我尝试的 -

cat f | awk -v batchNo=1 -v Num=4 \'{print $1 > \"batch_\" batchNo \".txt\";if(NR%Num==0) {batchNo++}}\'

生成 5 个文件,如下所示 -

ls batch_*
batch_1.txt  batch_2.txt  batch_3.txt  batch_4.txt  batch_5.txt

然后与下面的粘贴结合 -

 paste batch_1.txt batch_2.txt batch_3.txt batch_4.txt batch_5.txt
\"0eij8401c  \"dbij8a015  \"abij3b011  \"59ij41015  \"edij6801e
\"59ij41015  \"67ijb9011  \"7fij70018  \"f6ijae01e  \"pdij6801e
\"21ij3e01c  \"b5ije001b  \"77ijf9010  \"c4ij5801c  \"kdij6801e
\"dbije401b  \"bdij3701d  \"e5ij64015  \"dbij98012  \"8cij57018

我也尝试过这样的事情来获得想要的结果,但没有得到它。

awk \'{a[$1]++; b[$2]++;c[$3]++;d[$4]++;e[$5]++} END {for (k in a) print k > \"out.txt\"; for (j in b) print j > \"out.txt\";for (k in c) print j > \"out.txt\";for(l in d) print l> \"out.txt\"; for (m in e) print m> \"out.txt\";}\' batch_*

请有任何建议。

    标签: awk


    【解决方案1】:

    使用您显示的示例,请尝试遵循awk 代码。

    awk -F'^"|","'  'prev!=$2 || !prev{close(outputFile);outputFile="batch_"++count".txt"} {print $3 > (outputFile);prev=$2}' Input_file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-05
      • 2018-07-14
      • 2015-06-21
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      相关资源
      最近更新 更多