gpt4 book ai didi

regex - 我怎样才能执行这个grep命令

转载 作者:太空宇宙 更新时间:2023-11-04 10:37:53 25 4
gpt4 key购买 nike

我试图在正则表达式 101 中匹配这个模式

<a href="http://google.com">Google.com</a>
<A target="_blank" href='http://example.com/files.html'>An Example</A>
<a id="link23" HREF = "file23.html" target="_TOP">File #23</a>
<a href="images/mypic.png">See my picture!</a>
<a href="mailto:joelross@uw.edu">Email Joel</a>

我制作了这个正则表达式 - <[aA].\s(HREF|href)\s?=\s?('|").('|")>.*

现在,当我尝试通过命令行使用 grep 命令时,它会抛出一个错误。

./mdlinks.sh: line 3: unexpected EOF while looking for matching `"'
./mdlinks.sh: line 4: syntax error: unexpected end of file

这是源文件

#! /usr/bin/env bash
CONTENT=$(curl $1)
echo "$CONTENT" | grep -E -o '<[aA].*\s(HREF|href)\s?=\s?('|").*('|")>.*<\/[aA]>' >> mdlinks.txt

最佳答案

你需要转义正则表达式中的单引号,而且你的 shebang 有一个额外的空间(尽管那只是风格):

#!/usr/bin/env bash
CONTENT=$(curl $1)
echo "$CONTENT" | grep -E -o '<[aA].*\s(HREF|href)\s?=\s?('\''|").*('\''|")>.*<\/[aA]>' >> mdlinks.txt

可能值得为正则表达式使用双引号,而不是单引号。您仍然需要转义表达式中的双引号,但转义双引号更简洁:

#!/usr/bin/env bash
CONTENT=$(curl $1)
echo "$CONTENT" | grep -E -o "<[aA].*\s(HREF|href)\s?=\s?('|\").*('|\")>.*<\/[aA]>" >> mdlinks.txt

关于regex - 我怎样才能执行这个grep命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36555162/

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