用于修改文本的脚本

时间:2015-12-03 09:28:04

标签: bash awk

我的文字包含多种格式的文字:

我需要删除一些行的文本并更改某些列的位置,如下所示:

041114 00:22:06 #146422 INFO Trying to load config

就是这种格式:

注意:我不会只为一行做这件事,但我需要它包含所有包含许多行的文本文件。

我尝试使用awk:

awk '{ print $2" "$3" "$5" "$9 }

但我没得到我需要的东西。

1 个答案:

答案 0 :(得分:1)

如果所有行都是那种确切的格式,那么sed是最好的工具:

sed -r 's/.*\[20([0-9]{2})-([0-9]{2})-([0-9]{2})T([0-9]{2}:[0-9]{2}:[0-9]{2})\.[0-9]+ (#[0-9]+)]  ([A-Z]+) -- :/\1\2\3 \4 \5 \6/' 

任何与图案不完全匹配的线都将保持不变。

注意:我使用的是GNU sed,它通常默认安装在Linux上。其他sed实现可能会有所不同。