awk 转置带有添加文本的特定列,并且不在第 n 列上拆分,因为之后给定文本

awk transpose specific colums with added text and done split on nth column since given text after

我有这个输入文件

输入:文件1

LIB SITE LINUX A FEDORA 1a 22 X64 DC58 ROOM DC LOC 2.b
LIB SITE LINUX A FEDORA 1b 22 X64 DC58 ROOM DC LOC 2.b
LIB SITE OPENV A OPENV 1a 22 X64 DC22 ROOM DC LOC 2.b
LIB SITE OPENV A OPENV 1b 22 X64 DC22 ROOM DC LOC 2.b
LIB SITE OPENV A OPENV 1c 22 X64 DC22 ROOM DC LOC 2.b
LIB SITE WIN9K A WIN9K 1a 22 X64 DC22 ROOM DC LOC 2.b
LIB SITE WIN9K A WIN9K 1b 22 X64 DC22 ROOM DC LOC 2.b
LIB SITE WIN9K A WIN9K 1c 22 X64 DC22 ROOM DC LOC 2.b
LIB SITE WIN9K A WIN9K 1d 22 X64 DC22 ROOM DC LOC 2.b
LIB SITE SUSE B SUSE 2a 22 X64 DC10 ROOM DE LOC 3.ma
LIB SITE SUSE B SUSE 2b 22 X64 DC10 ROOM DE LOC 3.ma
LIB SITE SUSE B SUSE 3c 22 X64 DC10 ROOM DE LOC 3.ma
LIB SITE SUSE B SUSE 4a 22 X64 DC10 ROOM DE LOC 3.ma
LIB SITE LINUX A CENTOS 8b 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE LINUX A CENTOS 9a 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE LINUX A CENTOS 3c 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE LINUX A CENTOS 8a 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 7 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 7de 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 7e 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 7r 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 7t 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 74 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 71 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 73 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 744 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 77 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 75 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 724 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 75 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 71 22 X64 DC41 ROOM DF LOC 5.p
LIB SITE OPENV A OPEN1 72 22 X64 DC41 ROOM DF LOC 5.p

我有这个:

awk  -v OFS=" " 'NR > 1 {d[]= OFS ; c[] = c[] OFS } END {for (p in d) print d[p] OFS parent c[p]}' file1

将输出到这个:

LIB A WIN9K 1a 1b 1c 1d
LIB A OPENV 1a 1b 1c 7 7de 7e 7r 7t 74 71 73 744 77 75 724 75 71 72
LIB B SUSE 2a 2b 3c 4a
LIB A LINUX 1b 8b 9a 3c 8a

我尝试将多个管道命令放入以下格式,其中也是在任何行上,因为 id> 每十列完成后 完成 break/split 到先前相同部分的较短版本,例如 "LIB A OPENV" 添加文本。

预期输出:

place library>LIB site>A plat>WIN9K id>1a 1b 1c 1d
place library>LIB site>A plat>OPENV id>1a 1b 1c 7 7de 7e 7r 7t 74 71 
place library>LIB site>A plat>OPENV id>73 744 77 75 724 75 71 72
place library>LIB site>B plat>SUSE id>2a 2b 3c 4a
place library>LIB site>A plat>LINUX id>1b 8b 9a 3c 8a
awk '
  NR > 1{
    d[]="place library>"  " site>"  " plat>"  " id>"
    if ( in c) c[]=c[] ","   # append value with comma
    else c[]=                    # set initial value
  } 
  END{
    nl=""
    for (p in d){
      n=split(c[p], a, ",")          # split value into array a
      for (i=1;i<=n;i++){
        printf (i%10==1 ? nl d[p] : OFS) a[i]
        nl=ORS                       # add newline
      }
    }
    print ""
  }
' file1