[英]sed or awk replace match with first five characters
我必須在每行的開頭用時間(前五個字符)替換 pünktlich 這個詞。 並不總是 14:03。 時間可能會改變,但保持相同的格式。
有:
14:03,RB 87(57140),Donauwörth,pünktlich,Kein Grund
需要:
14:03,RB 87(57140),Donauwörth,14:03,Kein Grund
時間總是在每一行的開頭。
你有什么主意嗎?
您只需使用awk
即可完成此操作。 假設您的文件名為test.csv
:
awk 'BEGIN{FS=","; OFS=","}{print $1,$2,$3,$1,$5}' test.csv
Output 是:
14:03,RB 87(57140),Donauwörth,14:03,Kein Grund
說明:您使用FS
定義輸入字段分隔符,使用OFS
定義 output 字段分隔符。 然后按您想要的順序設置列。 $1
表示第一列, $2
表示第二列,其他列相同。
使用 GNU sed
的捕獲組,讓file.txt
內容為
14:03,RB 87(57140),Donauwörth,pünktlich,Kein Grund
然后
sed 's/^\([^,]*\)\(.*\)pünktlich/\1\2\1/' file.txt
給出 output
14:03,RB 87(57140),Donauwörth,14:03,Kein Grund
說明:我使用 2 個捕獲組:第一個是從行首 ( ^
) 到 first ,
即它確實包含零個或多個 ( *
) 而不是 ( ^
) 逗號 ( ,
),第二個是第一組和pünktlich
之間的所有內容。 我再次替換與第 1 組內容、第 2 組內容、第 1 組內容匹配的內容。 免責聲明:如果任何一行包含多個pünktlich
,則只有最后一個將更改為時間。
(在 GNU sed 4.2.2 中測試)
mawk 'BEGIN {_^=_+=_^=FS=OFS=","} $_=$!!_'
14:03,RB 87(57140),Donauwörth,14:03,Kein Grund
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.