RHEL 7系统我有一个输出文件,看起来像
eDTG=20210210-1540
Sent 74004956
Completed 72185529 (97.54%)
Lost 18119427 (2.46%)
QPS, SERVFAIL QPS 60122 2905
eDTG=20210210-1601我一直在使用sed将空格更改为选项卡,以便将其保存为csv。现在,我们需要将QPS行拆分为2行,如下所示(注意行之间的数字拆分)
eDTG=20210210-1540
Sent 74004956
Completed 72185529 (97.54%)
Lost 18119427 (2.46%)
QPS 60122
SERVFAIL QPS 2905
eDTG=20210210-1601我可以用
awk '/QPS/ {printf "QPS\t%s\nSERVFAIL QPS\t%s",$4,$5}' output.txt
但是gawk -i内嵌是不可用的,所以我在编写另一个文件时遇到了问题。当然,只有当我没有输入; {print}选项时,它才会打印匹配的行。然后,它也写了旧的行。我知道必须有更好的方法来做到这一点,而不是创建第二个文件,然后将其复制回第一个文件名(裁剪QPS,.)。我很感激你能提供的任何帮助。
发布于 2021-02-11 23:24:45
sed可以帮你更多。
sed -E -i 's/^QPS,[[:space:]]+SERVFAIL QPS[[:space:]]+([[:digit:]]+)[[:space:]]([[:digit:]]+$)/QPS\t \1\nSERVFAIL QPS\t \2/' file.txt-i标志使宪法就位。
https://unix.stackexchange.com/questions/634002
复制相似问题