我有很多类似以下的文件(所有文件的概念相同)

 more list-OS23

 linux-d
 linux-01  fedora-linux-c
 Solaris_machine1
 AIX-65             linux-redhat18   unixware7-h  unix-digital
       linux56-a     linuxr9


我的目标是按照以下格式顺序缩进行

 more list-OS23


 cycel 1             cycel2             cycel3         cycel4


 linux-d             fedora-linux-c     unixware7-h    unix-digital
 linux-01            linux-redhat18
 Solaris_machine1    linuxr9
 AIX-65
 linux56-a


我尝试通过awk缩进文件

  awk '{print $1"  "$2"   "$3}'  file


但缩进不像我预期的那样

我可以获得如何缩进文件的想法或实际示例?

我认为printf是这个建议的好命令

最佳答案

$ cat tst.sh
awk '
{
    for (i=1;i<=NF;i++) {
        rowNr = ++rowNrs[i]
        colNr = ++colNrs[rowNr]
        vals[rowNr,colNr] = $i
        numCols = (NF > numCols ? NF : numCols)
    }
}
END {
    for (colNr=1; colNr <= numCols; colNr++) {
        printf "cycle%s%s", colNr, (colNr<numCols ? OFS : ORS)
    }
    for (rowNr=1; rowNr <= NR; rowNr++) {
        for (colNr=1; (rowNr,colNr) in vals; colNr++) {
            printf "%s%s", (colNr>1 ? OFS : ""), vals[rowNr,colNr]
        }
        print ""
    }
}
' "$1" | column -t

$ ./tst.sh file
cycle1            cycle2          cycle3       cycle4
linux-d           fedora-linux-c  unixware7-h  unix-digital
linux-01          linux-redhat18
Solaris_machine1  linuxr9
AIX-65
linux56-a

10-06 10:31
查看更多