awk/sed/grep使用特定模式修改行

awk/sed/grep使用特定模式修改行,awk,sed,grep,Awk,Sed,Grep,我需要以某种方式修改以下文件: 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

我需要以某种方式修改以下文件:

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操作
是硬编码的。由于您想要的输出,必须包含两个字符串替换(Time->RunTime和Return=0->Return)

可能不是最漂亮的解决方案,但这应该可以实现

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

在此解决方案中,前两个单词
mongodb操作
是硬编码的。由于您想要的输出,必须包含两个字符串替换(Time->RunTime and Return=0->Return)

您不需要任何尾随分号,也不需要前两行末尾的反斜杠,如果您提前在NR上移动测试,则可以避免在第一行上执行不必要的sub()。另外,如果您丢失了
if
,并将测试移到条件部分而不是操作部分,那么它将更加惯用。您不需要任何尾随分号,也不需要前两行末尾的反斜杠,并且如果您更早地在NR上移动测试,则可以避免在第一行上执行不必要的sub()s。另外,如果您丢失了
if
,并将测试移到条件部分而不是操作部分,那么它将更加惯用。