我的程序启动一些服务并将其输出存储在tmp变量中,如果变量以FATAL关键字开头,我想匹配它的内容吗?如果它包含,我将使用Port in use命令打印echo
例如,如果tmp包含FATAL: Exception in startup, exiting.
我可以用sed:echo $tmp | sed 's/^FATAL.*/"Port in use"/'来做
但是我想使用内置的if来匹配模式。如何使用内置功能的shell来匹配REGEX?
我试图在bash脚本中执行一些相当简单的字符串解析。基本上,我有一个由多个多行字段组成的文件。每个字段都被已知的页眉和页脚包围。
我希望将每个字段分别提取到一个数组或类似的数组中,如下所示
>FILE=`cat file`
>REGEX="@#@#@#[\s\S]+?@#@#@"
>
>if [[$FILE =~ $REGEX ]] then
> echo $BASH_REMATCH
>fi
档案:
@#@#@#################################
this is field one
@#@#@#
@#@#@
我试图逐行读取文件,以提取捕获组中的所有锚标记。
到目前为止,我已经:
regex="(<a href=\")([A-Za-z0-9:/._-]+)\".*(<\/a>)"
while read line; do
if [[ $line =~ $regex ]]; then
#echo ${BASH_REMATCH}
href=${BASH_REMATCH[2]}
echo $href
fi
done < file.txt
虽然这几乎是可行的,因为我正在按要求捕获ur
我想找出两种匹配模式之间的线。如果缺少任何开始或结束模式,则不应打印行。
正确输入:
a
***** BEGIN *****
BASH is awesome
BASH is awesome
***** END *****
b
输出将
***** BEGIN *****
BASH is awesome
BASH is awesome
***** END *****
现在假设输入中缺少结束模式
a
***** BEGIN *****
BASH is awesome
BASH is awesome
b
线条不应该打印。
我试过这样做:
sed -n '/BEGIN/,/END/p'
我试图使用bash从变量中删除两个已知标记之间的未知字符。
例如
string="This text d #! more text jsdlj end and mo{re ;re end text.text"
我想删除最后一个单词“文本”(在结束词之前)和之后的第一个单词“结束”之间的所有字符。即在最后一次出现“文本”之后,第一次出现“结束”,但保留这两个标记)
result="This text d #! more text end and mo{re ;re end text.text"
我将使用它作为find -print0 _ xargs -0 bash
我正在尝试使用regex从以下文件内容中提取
# # Be sure to run `pod lib lint My Pod.podspec' to ensure this is a # valid spec before submitting. # # Any lines starting with a # are optional, but their use is encouraged # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html # Pod::Spec.ne
我有下面的脚本来检查是否发生了多个条件。
脚本
#!/bin/bash
echo "1.Add, 2.Sub, 3.Mul, 4.Div"
echo "Enter your choice:"
read ch
#Here i want to check the condition for 1, 01 and also 001
if [ $ch = 1 ]
then
echo "Addition goes here"
...
...
fi
备注:如何使用IN使用多个条件?
比如:
if [ $ch IN ('1',
因此官方的bash手册指出,“例如,正则表达式‘0123456789’匹配任何单个数字,而‘^()’则匹配任何不是开括号或结束括号的单个字符,”在这个问题的底部复制一个链接作为上下文。
所以我试着用我能想到的每一种方式来做这个“否定”的部分,但是我无法让它发挥作用:
$ cat test
a line
b line
c line
d line
$ grep [^abc] test
a line
b line
c line
d line
$ grep '[^abc]' test
a line
b line
c line
d line
$ grep '[^(abc)]
我需要Java RegExp,它可以匹配标记\begin{name}和\start{name}之间的所有内容,如下所示(标记可以嵌套):
\start{A}
im inside
\end{A}
im outside
\start{B}
\start{B1}
im inside
\end{B1}
im inside
\end{B}
im outside
在这种情况下,表达式应该忽略所有的im外部部分。有谁可以帮我?提前感谢!
我正在尝试使用file_get_contents读取html页面。在我处理数据之后,有一些不完整的标记,例如:
</p><p> test test test test</p>
在这种情况下,没有可以打开<p>的</p>。
或
<font color="#333333">abc</font><div><p>go go go go </p>
在这种情况下,没有一个</div>来关闭<div>。
因此,我想使用preg_replace删除所有
我正在用下面的代码下载网页,
WebRequest request = WebRequest.Create(strURL);
WebResponse response = request.GetResponse();
Stream data = response.GetResponseStream();
string html = String.Empty;
using (StreamReader sr = new StreamReader(data))
{
html = sr.ReadToEnd();
}
然后,我从这里提取身体的一部分如下:
int nBodyStart = down
我正在设置一个mysql容器,如下所示:
docker运行-v /srv/information-db:/var/lib/mysql tutum/mysql /bin/bash -c "/usr/bin/mysql_install_db“
现在,当主机上的/srv上没有装载任何东西时,这是有效的,但当我装载我的驱动器时,docker似乎写入了底层文件系统(/),例如:
/]# ls -l /srv
total 0
/]# mount /dev/xvdc1 /srv
/]# mount
...
/dev/xvdc1 on /srv type ext4 (rw,relatime,secla