我有很多类似以下的文件(所有文件的概念相同)
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