我的文字包含多种格式的文字:
我需要删除一些行的文本并更改某些列的位置,如下所示:
041114 00:22:06 #146422 INFO Trying to load config
就是这种格式:
注意:我不会只为一行做这件事,但我需要它包含所有包含许多行的文本文件。
我尝试使用awk:
awk '{ print $2" "$3" "$5" "$9 }
但我没得到我需要的东西。
答案 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实现可能会有所不同。