簡體   English   中英

awk / sed / grep用某些模式修改行

[英]awk/sed/grep modify lines with certain pattern

我需要以某種方式修改下面的文件:

1445777609670355400 mongo client connection created with mongodb
1445777612279125121 [A], Time(ms), 3344.0
1445777612288777627 [B], Throughput(ops/sec), 299.0430622009569
1445777612289907122 [C], Operations, 505.0
1445777612290864948 [D], AverageLatency(us), 1712.0039603960397
1445777612294065941 [E], MinLatency(us), 253.0
1445777612325747187 [F], Return=0, 505

我遵循了該線程中給出的解決方案。 到目前為止,我得到了一些結果:

mongodb operations="A" 1445777612279125121
mongodb operations="B" 1445777612288777627
mongodb operations="C" 1445777612289907122
mongodb operations="D" 1445777612290864948
mongodb operations="E" 1445777612294065941
mongodb operations="F" 1445777612295131996

我想要實現以下輸出:

mongodb operations="A",RunTime(ms)=3344.0 1445777612279125121
mongodb operations="B",Throughput(ops/sec)=299.0430622009569 1445777612288777627
mongodb operations="C",Operations=505.0 1445777612289907122
mongodb operations="D",AverageLatency(us)=1712.0039603960397 1445777612290864948
mongodb operations="E",MinLatency(us)=253.0 1445777612294065941
mongodb operations="F",Return=505 1445777612325747187

謝謝。

可能不是最漂亮的解決方案,但這應該可以解決問題

awk -F"[][, ]+" '{str=$3; sub(/Time/,"RunTime", str); \
                  sub(/=0/, "", str); \
                  if(NR>1){print "mongodb operations=\""$2"\","str"="$4,$1}}' input

在此解決方案中, mongodb operations的前兩個單詞是硬編碼的。 由於需要輸出,因此必須包含兩個字符串替換(時間->運行時和Return = 0-> Return)

$ cat tst.awk
BEGIN { FS="[][[:space:],]+" }
NR>1 {
    sub(/^Time/,"Run&",$3)
    sub(/=[0-9]+$/,"",$3)
    printf "mongodb operations=\"%s\",%s=%s %s\n",$2,$3,$4,$1
}

$ awk -f tst.awk file
mongodb operations="A",RunTime(ms)=3344.0 1445777612279125121
mongodb operations="B",Throughput(ops/sec)=299.0430622009569 1445777612288777627
mongodb operations="C",Operations=505.0 1445777612289907122
mongodb operations="D",AverageLatency(us)=1712.0039603960397 1445777612290864948
mongodb operations="E",MinLatency(us)=253.0 1445777612294065941
mongodb operations="F",Return=505 1445777612325747187

暫無
暫無

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

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