gpt4 book ai didi

regex - 检查 while 循环(shell)内的正则表达式条件

转载 作者:行者123 更新时间:2023-12-01 10:51:17 25 4
gpt4 key购买 nike

我在运行我的简单 shell 脚本时遇到问题,我在其中使用 while 循环读取文本文件并尝试使用匹配的正则表达式检查条件:

#!/bin/sh
regex="^sometext"


cat input.txt |
{
while read string
do if [[ $string ~= $regex ]]; then
echo "$string" | awk '{print $1}' >> output.txt
else
echo "$string" >> outfile.txt
fi
done
}

但我只收到类似

的错误
[[: not found

你能告诉我吗?

最佳答案

[[ expr ]] 是 bash 主义; sh 没有。

如果您想使用该语法,请使用 #!/bin/bash


也就是说,为什么要使用 shell 脚本?

Awk 已经可以做你在这里做的一切——你只需要利用 Awk 的内置正则表达式匹配和每行有多个操作的能力:

您的原始脚本可以简化为此命令:

awk '/^sometext/ {print $1; next} {print}' input.txt >> output.txt

如果模式匹配,Awk 将运行第一个 {} block ,它执行 print $1,然后强制 Awk 移动到下一行。否则,它将继续到第二个 {} block ,它只打印该行。

关于regex - 检查 while 循环(shell)内的正则表达式条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19689927/

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