这是我最初的输入:
Feb 27 15:26:22 ::ffff:127.0.0.1 [email protected] (35) /console/login | [Authentication] [User] [LoginFailed] Remote authentication failed. UserName = admin
这是我想要的最终结果:
Feb 27 14:42:50 [Authentication] [User] [LoginFailed] Remote authentication failed. UserName = admin
这就是我使用 sed 的方法:
cat audit.log | grep -i loginfailed | grep -i remote | sed 's/::.*\ |//' | less -S
我的问题是如何使用 awk 做同样的事情?
我已经研究过可用的解决方案,但它们似乎最终无法产生所需的输出。
只是为了澄清我对任何类型的循环都感兴趣,例如,我希望能够在一行上打印从第一个到第三个以及从第 9 个到第 n 个元素。
答案1
awk
你可以通过以下方式进行使用:
awk '{ $4=$5=$6=$7=$8=""; print}' input_file
如果你想删除这些空间,你可以使用
awk '{ $4=$5=$6=$7=$8=""; print}' input_file|sed 's/ / /g'
或仅使用awk
awk '{ $4=$5=$6=$7=$8=""; gsub(/ /, "", $0);print}' input_file