簡體   English   中英

使用sed / awk將一行附加到另一行

[英]Using sed/awk to append one line to another

為了簡化我想要的,我有這個:

Group name="Group1"
Device name="G1_Device1" host="G1_host1"
Device name="G2_Device2" host="G1_host2"
Group name="Group2"
Device name="G2_Device1" host="G2_host1"
Group name="Group3"
Device name="G3_Device1" host="G3_Host1"
Device name="G3_Device2" host="G3_host2"
Device name="G3_Device3" host="G3_host3"
Device name="G3_Device4" host="G3_host4"

我需要這個(檢查組名):

Group name="Group1" Device name="G1_Device1" host="G1_host1"
Group name="Group1" Device name="G2_Device2" host="G1_host2"
Group name="Group2" Device name="G2_Device1" host="G2_host1"
Group name="Group3" Device name="G3_Device1" host="G3_Host1"
Group name="Group3" Device name="G3_Device2" host="G3_host2"
Group name="Group3" Device name="G3_Device3" host="G3_host3"
Group name="Group3" Device name="G3_Device4" host="G3_host4"

有沒有辦法用sed和/或awk做到這一點?

awk '$1=="Group"{save=$0}; $1=="Device"{print save,$0}' file

輸出:

Group name="Group1" Device name="G1_Device1" host="G1_host1"
Group name="Group1" Device name="G2_Device2" host="G1_host2"
Group name="Group2" Device name="G2_Device1" host="G2_host1"
Group name="Group3" Device name="G3_Device1" host="G3_Host1"
Group name="Group3" Device name="G3_Device2" host="G3_host2"
Group name="Group3" Device name="G3_Device3" host="G3_host3"
Group name="Group3" Device name="G3_Device4" host="G3_host4"

嚴格考慮您的實際Input_file與所示示例相同,那么下面的內容可能會對您有所幫助。

awk '/^Group name/{value=$0;next} {print value,$0}' Input_file

因此,這里我不檢查行是否具有字符串device ,如果您的Input_file在Group之后可能還有許多其他行,那么我們可能必須像@Cyrus的解決方案一樣進行檢查。

與sed:

sed -E '/^Group/{h;d};G;s/(.*)\n(.*)/\2 \1/' infile

解釋:

/^Group/ {              # If the line starts with "Group"...
    h                   # copy pattern space to hold space
    d                   # Delete pattern space, start new cycle
}
G                       # Append hold space to pattern space (inserts newline)
s/(.*)\n(.*)/\2 \1/     # Swap two lines in pattern space

-E選項(對於某些較舊的sed為-r )只是很方便; 否則,捕獲組需要轉義,如\\(.*\\)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM