在任何内容(文本、数字、表情符号)之后(例如主题标签)的某些字符(引号等)之间进行 grep
grep between some characters (quotes, etc) of after (eg. hashtag) any content (text, numbers, emojis)
基于这个问题:;对于这种情况没有解决方案(当您有特殊字符时)。
这个问题经过深入研究,而不是 this unrelated question 的重复问题,因为所引用的内容并未涵盖所有询问的主题(支持特殊字符和数字;grep 介于 after/before 和 after/before 之间) .
echo "Text and #hashtag" | grep -o '#[[:alpha:]]\+*' | tr -d '"'
运行成功,返回#hashtag
;这仍然与提到的问题有关...
...关于我自己需要的这个新问题(可能对你有用),这是我的版本,解析双引号之间的文本而不是标签之后:
echo '#first = "Yes"' | grep -o '"[[:alpha:]]\+*"' | tr -d '"'
并且有效,返回 Yes
.
然而,当它有一个表情符号或其他字符,如 >
和 /
(例如:echo '#first = "✅ Yes"' | grep -o '"[[:alpha:]]\+*"' | tr -d '"'
)时,它 returns 一个空输出。
它必须支持任何类型的字符(表情符号、html 标签、数字)。
这不仅对解析字符之间有用,而且对字符后也有用(例如解析任何#hashtag 文本)或之前。
多亏了@Aserre的指点,才想出了答案
为了使“在字符之后出现时获取每个文本”和“在引号之间出现时获取每个文本”(grep) 可以处理任何字符,我们必须将 [[:alpha:]]
替换为...
的区块
所以,它是:
echo '#first = "✅ Yes"' | grep -o '"...\+"' | tr -d '"'
(获取双引号之间的任何内容)
和:
echo "Text and #hashtag" | grep -o '#...\+' | tr -d '"'
(获取主题标签后的任何内容)
更新:
如果你想支持只有 1 个字符的东西(例如 0 到 9 之间的数字),请将 ...
替换为 .
(单点)
如问题所示,它适用于:表情符号、字母、数字和其他特殊字符。
双引号之间提取文本的方法是匹配双引号以外的任何字符,双引号之间尽可能匹配
grep -o '"[^"]*"' | tr -d '"'
部分测试用例:
grep -o '"[^"]*"' <<\___here | tr -d '"'
there is "text" between "double quotes"
just one "?" here, "test me!"
any unpaired double quote " will not match
___here
其中第二个将失败,并显示您自己答案中的当前代码。
基于这个问题:
这个问题经过深入研究,而不是 this unrelated question 的重复问题,因为所引用的内容并未涵盖所有询问的主题(支持特殊字符和数字;grep 介于 after/before 和 after/before 之间) .
echo "Text and #hashtag" | grep -o '#[[:alpha:]]\+*' | tr -d '"'
运行成功,返回#hashtag
;这仍然与提到的问题有关...
...关于我自己需要的这个新问题(可能对你有用),这是我的版本,解析双引号之间的文本而不是标签之后:
echo '#first = "Yes"' | grep -o '"[[:alpha:]]\+*"' | tr -d '"'
并且有效,返回 Yes
.
然而,当它有一个表情符号或其他字符,如 >
和 /
(例如:echo '#first = "✅ Yes"' | grep -o '"[[:alpha:]]\+*"' | tr -d '"'
)时,它 returns 一个空输出。
它必须支持任何类型的字符(表情符号、html 标签、数字)。
这不仅对解析字符之间有用,而且对字符后也有用(例如解析任何#hashtag 文本)或之前。
多亏了@Aserre的指点,才想出了答案
为了使“在字符之后出现时获取每个文本”和“在引号之间出现时获取每个文本”(grep) 可以处理任何字符,我们必须将 [[:alpha:]]
替换为...
所以,它是:
echo '#first = "✅ Yes"' | grep -o '"...\+"' | tr -d '"'
(获取双引号之间的任何内容)
和:
echo "Text and #hashtag" | grep -o '#...\+' | tr -d '"'
(获取主题标签后的任何内容)
更新:
如果你想支持只有 1 个字符的东西(例如 0 到 9 之间的数字),请将 ...
替换为 .
(单点)
如问题所示,它适用于:表情符号、字母、数字和其他特殊字符。
双引号之间提取文本的方法是匹配双引号以外的任何字符,双引号之间尽可能匹配
grep -o '"[^"]*"' | tr -d '"'
部分测试用例:
grep -o '"[^"]*"' <<\___here | tr -d '"'
there is "text" between "double quotes"
just one "?" here, "test me!"
any unpaired double quote " will not match
___here
其中第二个将失败,并显示您自己答案中的当前代码。