[英]Awk pattern matching: looping through occurrences, appending text
我在文本文件中循環瀏覽電台名稱。 對於文本文件中的每個站塊,我想匹配首次出現的“ add”,並使用該站塊中的相應傳感器和時間信息附加結束語句。 如果該電台有第二個傳感器,那么我也想在第二次出現“ add”之后使用適當的傳感器和相同的時間信息添加結束聲明。 如果不存在第二個傳感器,則可以移動到下一個站點。 我想在文本文件中的每個站塊中都遵循這種模式。 我已經用awk和sed嘗試了一些操作,但是每次“添加”之后,我只能添加close語句。 誰能指導我采用更合適的技術? 這是文本文件中的兩個示例站塊:
sta charlie 34.07335 -106.91932 1.43 topico
time 01/14/2015 23:05:38
net XI SPREE
datalogger q330 0100000EA9C2B9C3 # 2842
sensor cmg3t 0 T3S82
add
sensor trillium 0 T3N04
add
#######Next station block###############
sta charlie2 34.07335 -106.91932 1.43 topico2
time 01/14/2015 23:05:38
net XI SPREE
datalogger q330 0100000EA9C2B9C3 # 2842
sensor trillium 0 T3S84
add
sensor sts2 0 T3N04
add
我希望代碼輸出以下內容:
sta charlie 34.07335 -106.91932 1.43 topico
time 01/14/2015 23:05:38
net XI SPREE
datalogger q330 0100000EA9C2B9C3 # 2842
sensor cmg3t 0 T3S82
add
close sensor cmg3t 01/14/2015 23:05:38
sensor trillium 0 T3N04
add
close sensor trillium 01/14/2015 23:05:38
#######Next station block###############
sta charlie2 34.07335 -106.91932 1.43 topico2
time 01/23/2015 17:04:22
net XI SPREE
datalogger q330 0100000EA9C2B9C3 # 2842
sensor trillium 0 T3S84
add
close sensor trillium 01/23/2015 17:04:22
sensor sts2 0 T3N04
add
close sensor sts2 01/23/2015 17:04:22
這樣的聲音聽起來像您想要的,但請問一下,當所有輸入的日期均為1/14時,發布的輸出中的日期如何變為1/23:
$ awk '/^time/{time=$2" "$3} /^sensor/{sensor=$1" "$2} {print} /^add/{print "close", sensor, time}' file
sta charlie 34.07335 -106.91932 1.43 topico
time 01/14/2015 23:05:38
net XI SPREE
datalogger q330 0100000EA9C2B9C3 # 2842
sensor cmg3t 0 T3S82
add
close sensor cmg3t 01/14/2015 23:05:38
sensor trillium 0 T3N04
add
close sensor trillium 01/14/2015 23:05:38
#######Next station block###############
sta charlie2 34.07335 -106.91932 1.43 topico2
time 01/14/2015 23:05:38
net XI SPREE
datalogger q330 0100000EA9C2B9C3 # 2842
sensor trillium 0 T3S84
add
close sensor trillium 01/14/2015 23:05:38
sensor sts2 0 T3N04
add
close sensor sts2 01/14/2015 23:05:38
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.