Linux   发布时间:2022-05-08  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了awk“if”声明大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个文件

foo
--
bar

我只想要分隔符上方的行.我已经在这方面挣扎了太长时间,并尝试了许多变种.我的一个班轮是:

echo -e "foo\n-- \nbar" | gawk -v x=0 -- '/^--\ / { x++ } ; IF (x==0) {print} '

这应该只打印“foo”但我得到整个文件输出.如果我改为打印x我得到

0
1
1

我似乎无法使awk根据x的值有条件地打印一行.我知道我错过了一些简单的事情.

解决方法

试着这样做:

echo -e "foo\n-- \nbar" | awk '/^--/{exit}1'

说明

> / ^ – /是一个正则表达式,匹配当前行开头的字符串
如果条件为真,则执行> {}部分(前一个正则表达式)
> 1与{print}类似:默认情况下,如果条件为真,则在STDOUT上打印awk.然1对于awk是正确的,但它会打印当前行.

分解命令:

echo -e "foo\n-- \nbar" | awk '
    {
        if (/^--/) {
            exit
        }
        else {
            print
        }
    }
'

替代分解:

echo -e "foo\n-- \nbar" |
awk '(/^--/) { exit }
             { print }'

这强调有两种模式行为规则;一个具有显式模式和退出动作;另一个是隐式模式和打印动作.

大佬总结

以上是大佬教程为你收集整理的awk“if”声明全部内容,希望文章能够帮你解决awk“if”声明所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: