在 awk 中使用 for 循环打印数据

在 awk 中使用 for 循环打印数据

这是我最初的输入:

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

相关内容