gpt4 book ai didi

awk "if"语句

转载 作者:行者123 更新时间:2023-12-04 23:25:28 24 4
gpt4 key购买 nike

我有一个文件

foo
--
bar

我只想要分隔符上方的行。我已经为此苦苦挣扎了太久并尝试了许多变体。我的一个类轮是:
echo -e "foo\n-- \nbar" | gawk -v x=0 -- '/^--\ / { x++ } ; IF (x==0) {print} '

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

我似乎无法让 make awk 根据 x 的值有条件地打印一行。我知道我错过了一些简单的东西。

最佳答案

尝试这样做:

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

说明
  • /^--/是匹配当前行开头的字符串的正则表达式
  • {}如果条件为真(前一个正则表达式),则执行部分
  • 1就像 {print} :默认情况下,awk如果条件为真,则在 STDOUT 上打印。虽然 1 awk 为真,它打印当前行。

  • 命令的分解:
    echo -e "foo\n-- \nbar" | awk '
    {
    if (/^--/) {
    exit
    }
    else {
    print
    }
    }
    '

    替代分解:
    echo -e "foo\n-- \nbar" |
    awk '(/^--/) { exit }
    { print }'

    这强调有两个模式- Action 规则;具有明确模式和退出操作的一种;另一个带有隐式图案和打印 Action 。

    关于awk "if"语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13661907/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com