簡體   English   中英

AWK模式匹配:循環出現,添加文本

[英]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.

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