提取'$$'个字符之间的字符串-$$ extractabc $$

时间:2019-04-21 21:14:14

标签: shell

我正在研究shell脚本及其新功能。我想提取两个$$个字符之间的字符串,例如:

输入:

$$extractabc$$

输出

extractabc

我使用了grep和sed,但没有解决。欢迎任何建议!

5 个答案:

答案 0 :(得分:0)

您可以

input:$$extractabc$$ output:extractabc

假设文件包含awk$使用input:作为分隔符将您的数据分成多个部分。第一项为extractabc,下一项为空,下一项为sed -e 's/.*$$\(.*\)$$.*/\1/' file.txt

您可以像这样使用sed来获取相同的信息。

sed

.*$$(.*)$$.*在$$ s之间查找信息并将其输出。目标是键入类似.*的内容。贪婪,但只和我在一起。

  • 查找(.*)-即,$$之前的零个或多个字符。
  • 然后该字符串应包含$$
  • $$之后,任何字符都会零次或更多次
  • 然后该字符串应再有一个$$
  • 还有其他一些字符
  • 两个$$之间是\1。在$$ s之间找到的字符串被赋予占位符{{1}}
  • sed找到并发布了此类信息

答案 1 :(得分:0)

使用grep PCRE(如果有)和环顾四周:

$ echo '$$extractabc$$' | grep -oP "(?<=\\$\\$).*(?=\\$\\$)"
extractabc

答案 2 :(得分:0)

echo '$$extractabc$$' | awk '{gsub(/\$\$/,"")}1'
extractabc

答案 3 :(得分:0)

这是另一种变化形式:

echo "$$extractabc$$" | awk -F"$$" 'NF==3 {print $2}'

它会测试两组$$,然后才打印$$之间的内容

也可以用于blabla$$some_data$$moreblabla

这样的输入

答案 4 :(得分:0)

如何删除输入中的所有$?

$ echo '$$extractabc$$' | sed 's/\$//g'
extractabc

tr

$ echo '$$extractabc$$' | tr -d '$'
extractabc