awk 根据模式转置行并在填充空字段的当前列之前移动(复制)
awk transpose lines based on pattern and move (copy) before current columns with filling empty fields
您好,我正在尝试使用以下格式的文本
输入:
NICK JEFF
NOAA A4:80:15
NOAA A4:80:17
NOOI D0:F2:0B BASE-TREE_IN-M_K
NICK STAN
NOAA C1:46:6B
NOOI D5:75:0C BASE-TREE_OUT_OUT
NICK INDEXER
NOOI D5:75:0C SEAT_25
NOAA C1:46:6B
NICK VUZER
NOAA A4:F2:CD
NOOI D0:F2:2D SEAT_42_FLIGHT
NOAA A4:F2:CD
NICK CAPTAIN
NOOI A4:82:8D
NOAA A4:82:8F
NOOI 40:63:07 SYS-BRAVO_X1
NOOI 40:62:DB SYS-BRAVO_X2
NOOI 40:62:B5 SYS-BRAVO_X3
NOOI D0:47:4A BASE-TREE_OUT_OUT
NOOI 51:30:45 NOBASE-INDEX_OUT_FIF
NOOI A4:82:8D
NOAA A4:82:8F
我试过这个,但它错误地复制了我的值
awk '{for (i=1; i<=1; i++) { print $i " " " "" "}}' input
预期的输出应该像下面这样整理:
NICK JEFF NOAA A4:80:15 EMPTY
NICK JEFF NOAA A4:80:17 EMPTY
NICK JEFF NOOI D0:F2:0B BASE-TREE_IN-M_K
NICK STAN NOAA C1:46:6B EMPTY
NICK STAN NOOI D5:75:0C BASE-TREE_OUT_OUT
NICK INDEXER NOOI D5:75:0C SEAT_25
NICK INDEXER NOAA C1:46:6B EMPTY
NICK VUZER NOAA A4:F2:CD EMPTY
NICK VUZER NOOI D0:F2:2D SEAT_42_FLIGHT
NICK VUZER NOAA A4:F2:CD EMPTY
NICK CAPTAIN NOOI A4:82:8D EMPTY
NICK CAPTAIN NOAA A4:82:8F EMPTY
NICK CAPTAIN NOOI 40:63:07 SYS-BRAVO_X1
NICK CAPTAIN NOOI 40:62:DB SYS-BRAVO_X2
NICK CAPTAIN NOOI 40:62:B5 SYS-BRAVO_X3
NICK CAPTAIN NOOI D0:47:4A BASE-TREE_OUT_OUT
NICK CAPTAIN NOOI 51:30:45 NOBASE-INDEX_OUT_FIF
NICK CAPTAIN NOOI A4:82:8D EMPTY
NICK CAPTAIN NOAA A4:82:8F EMPTY
这意味着模式一直是"nick"并且输入文件的文件读取方向是从上到下并且像jeff stan等昵称被放置(复制)在它意味着它设置为第一个之前并且第二列后面是输入的前几列。文本 "EMPTY" 被添加到空字段以保留 format/to 具有相等的列/字段数字填充值
我想这就是你需要的
$ awk '/^NICK/ {p=[=10=]; next}
{print p,[=10=],(NF>2?"":"EMPTY")}' file
NICK JEFF NOAA A4:80:15 EMPTY
NICK JEFF NOAA A4:80:17 EMPTY
NICK JEFF NOOI D0:F2:0B BASE-TREE_IN-M_K
NICK STAN NOAA C1:46:6B EMPTY
NICK STAN NOOI D5:75:0C BASE-TREE_OUT_OUT
NICK INDEXER NOOI D5:75:0C SEAT_25
NICK INDEXER NOAA C1:46:6B EMPTY
NICK VUZER NOAA A4:F2:CD EMPTY
NICK VUZER NOOI D0:F2:2D SEAT_42_FLIGHT
NICK VUZER NOAA A4:F2:CD EMPTY
NICK CAPTAIN NOOI A4:82:8D EMPTY
NICK CAPTAIN NOAA A4:82:8F EMPTY
NICK CAPTAIN NOOI 40:63:07 SYS-BRAVO_X1
NICK CAPTAIN NOOI 40:62:DB SYS-BRAVO_X2
NICK CAPTAIN NOOI 40:62:B5 SYS-BRAVO_X3
NICK CAPTAIN NOOI D0:47:4A BASE-TREE_OUT_OUT
NICK CAPTAIN NOOI 51:30:45 NOBASE-INDEX_OUT_FIF
NICK CAPTAIN NOOI A4:82:8D EMPTY
NICK CAPTAIN NOAA A4:82:8F EMPTY
awk '{if(=="NICK")
{line=[=10=]}
else
{if(NF==2)
{print line,[=10=],"EMPTY"}
else
{print line,[=10=]}
}
}' file
输出:
NICK JEFF NOAA A4:80:15 EMPTY
NICK JEFF NOAA A4:80:17 EMPTY
NICK JEFF NOOI D0:F2:0B BASE-TREE_IN-M_K
NICK STAN NOAA C1:46:6B EMPTY
NICK STAN NOOI D5:75:0C BASE-TREE_OUT_OUT
NICK INDEXER NOOI D5:75:0C SEAT_25
NICK INDEXER NOAA C1:46:6B EMPTY
NICK VUZER NOAA A4:F2:CD EMPTY
NICK VUZER NOOI D0:F2:2D SEAT_42_FLIGHT
NICK VUZER NOAA A4:F2:CD EMPTY
NICK CAPTAIN NOOI A4:82:8D EMPTY
NICK CAPTAIN NOAA A4:82:8F EMPTY
NICK CAPTAIN NOOI 40:63:07 SYS-BRAVO_X1
NICK CAPTAIN NOOI 40:62:DB SYS-BRAVO_X2
NICK CAPTAIN NOOI 40:62:B5 SYS-BRAVO_X3
NICK CAPTAIN NOOI D0:47:4A BASE-TREE_OUT_OUT
NICK CAPTAIN NOOI 51:30:45 NOBASE-INDEX_OUT_FIF
NICK CAPTAIN NOOI A4:82:8D EMPTY
NICK CAPTAIN NOAA A4:82:8F EMPTY
8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR
您好,我正在尝试使用以下格式的文本
输入:
NICK JEFF
NOAA A4:80:15
NOAA A4:80:17
NOOI D0:F2:0B BASE-TREE_IN-M_K
NICK STAN
NOAA C1:46:6B
NOOI D5:75:0C BASE-TREE_OUT_OUT
NICK INDEXER
NOOI D5:75:0C SEAT_25
NOAA C1:46:6B
NICK VUZER
NOAA A4:F2:CD
NOOI D0:F2:2D SEAT_42_FLIGHT
NOAA A4:F2:CD
NICK CAPTAIN
NOOI A4:82:8D
NOAA A4:82:8F
NOOI 40:63:07 SYS-BRAVO_X1
NOOI 40:62:DB SYS-BRAVO_X2
NOOI 40:62:B5 SYS-BRAVO_X3
NOOI D0:47:4A BASE-TREE_OUT_OUT
NOOI 51:30:45 NOBASE-INDEX_OUT_FIF
NOOI A4:82:8D
NOAA A4:82:8F
我试过这个,但它错误地复制了我的值
awk '{for (i=1; i<=1; i++) { print $i " " " "" "}}' input
预期的输出应该像下面这样整理:
NICK JEFF NOAA A4:80:15 EMPTY
NICK JEFF NOAA A4:80:17 EMPTY
NICK JEFF NOOI D0:F2:0B BASE-TREE_IN-M_K
NICK STAN NOAA C1:46:6B EMPTY
NICK STAN NOOI D5:75:0C BASE-TREE_OUT_OUT
NICK INDEXER NOOI D5:75:0C SEAT_25
NICK INDEXER NOAA C1:46:6B EMPTY
NICK VUZER NOAA A4:F2:CD EMPTY
NICK VUZER NOOI D0:F2:2D SEAT_42_FLIGHT
NICK VUZER NOAA A4:F2:CD EMPTY
NICK CAPTAIN NOOI A4:82:8D EMPTY
NICK CAPTAIN NOAA A4:82:8F EMPTY
NICK CAPTAIN NOOI 40:63:07 SYS-BRAVO_X1
NICK CAPTAIN NOOI 40:62:DB SYS-BRAVO_X2
NICK CAPTAIN NOOI 40:62:B5 SYS-BRAVO_X3
NICK CAPTAIN NOOI D0:47:4A BASE-TREE_OUT_OUT
NICK CAPTAIN NOOI 51:30:45 NOBASE-INDEX_OUT_FIF
NICK CAPTAIN NOOI A4:82:8D EMPTY
NICK CAPTAIN NOAA A4:82:8F EMPTY
这意味着模式一直是"nick"并且输入文件的文件读取方向是从上到下并且像jeff stan等昵称被放置(复制)在它意味着它设置为第一个之前并且第二列后面是输入的前几列。文本 "EMPTY" 被添加到空字段以保留 format/to 具有相等的列/字段数字填充值
我想这就是你需要的
$ awk '/^NICK/ {p=[=10=]; next}
{print p,[=10=],(NF>2?"":"EMPTY")}' file
NICK JEFF NOAA A4:80:15 EMPTY
NICK JEFF NOAA A4:80:17 EMPTY
NICK JEFF NOOI D0:F2:0B BASE-TREE_IN-M_K
NICK STAN NOAA C1:46:6B EMPTY
NICK STAN NOOI D5:75:0C BASE-TREE_OUT_OUT
NICK INDEXER NOOI D5:75:0C SEAT_25
NICK INDEXER NOAA C1:46:6B EMPTY
NICK VUZER NOAA A4:F2:CD EMPTY
NICK VUZER NOOI D0:F2:2D SEAT_42_FLIGHT
NICK VUZER NOAA A4:F2:CD EMPTY
NICK CAPTAIN NOOI A4:82:8D EMPTY
NICK CAPTAIN NOAA A4:82:8F EMPTY
NICK CAPTAIN NOOI 40:63:07 SYS-BRAVO_X1
NICK CAPTAIN NOOI 40:62:DB SYS-BRAVO_X2
NICK CAPTAIN NOOI 40:62:B5 SYS-BRAVO_X3
NICK CAPTAIN NOOI D0:47:4A BASE-TREE_OUT_OUT
NICK CAPTAIN NOOI 51:30:45 NOBASE-INDEX_OUT_FIF
NICK CAPTAIN NOOI A4:82:8D EMPTY
NICK CAPTAIN NOAA A4:82:8F EMPTY
awk '{if(=="NICK")
{line=[=10=]}
else
{if(NF==2)
{print line,[=10=],"EMPTY"}
else
{print line,[=10=]}
}
}' file
输出:
NICK JEFF NOAA A4:80:15 EMPTY NICK JEFF NOAA A4:80:17 EMPTY NICK JEFF NOOI D0:F2:0B BASE-TREE_IN-M_K NICK STAN NOAA C1:46:6B EMPTY NICK STAN NOOI D5:75:0C BASE-TREE_OUT_OUT NICK INDEXER NOOI D5:75:0C SEAT_25 NICK INDEXER NOAA C1:46:6B EMPTY NICK VUZER NOAA A4:F2:CD EMPTY NICK VUZER NOOI D0:F2:2D SEAT_42_FLIGHT NICK VUZER NOAA A4:F2:CD EMPTY NICK CAPTAIN NOOI A4:82:8D EMPTY NICK CAPTAIN NOAA A4:82:8F EMPTY NICK CAPTAIN NOOI 40:63:07 SYS-BRAVO_X1 NICK CAPTAIN NOOI 40:62:DB SYS-BRAVO_X2 NICK CAPTAIN NOOI 40:62:B5 SYS-BRAVO_X3 NICK CAPTAIN NOOI D0:47:4A BASE-TREE_OUT_OUT NICK CAPTAIN NOOI 51:30:45 NOBASE-INDEX_OUT_FIF NICK CAPTAIN NOOI A4:82:8D EMPTY NICK CAPTAIN NOAA A4:82:8F EMPTY
8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR