我在Bash中有一个字符串:
string="My string"
Run Code Online (Sandbox Code Playgroud)
如何测试它是否包含另一个字符串?
if [ $string ?? 'foo' ]; then
echo "It's there!"
fi
Run Code Online (Sandbox Code Playgroud)
??我的未知运营商在哪里?我是否使用echo grep?
if echo "$string" | grep 'foo'; then
echo "It's there!"
fi
Run Code Online (Sandbox Code Playgroud)
这看起来有点笨拙.
我想在bash中检查文件是否包含特定字符串.我用过这个脚本,但它不起作用:
if [[ 'grep 'SomeString' $File' ]];then
# Some Actions
fi
Run Code Online (Sandbox Code Playgroud)
我的代码有什么问题?
操作员=~叫什么?它只用于比较左侧的右侧吗?
运行测试时为什么需要双方括号?
即. [[ $phrase =~ $keyword ]]
谢谢
我想检查我的所有字符串是否都存在于文本文件中.它们可以存在于同一条线上或不同的线上.部分匹配应该没问题.像这样:
...
string1
...
string2
...
string3
...
string1 string2
...
string1 string2 string3
...
string3 string1 string2
...
string2 string3
... and so on
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我们可以用正则表达式代替字符串.
例如,以下代码检查文件中是否存在任何字符串:
if grep -EFq "string1|string2|string3" file; then
# there is at least one match
fi
Run Code Online (Sandbox Code Playgroud)
如何检查是否所有这些都存在?由于我们只对所有匹配项的存在感兴趣,因此我们应该在所有字符串匹配后立即停止读取文件.
是否有可能做到这一点,而不必调用grep多次(不会标尺时输入文件较大,或者如果我们有一个大量的字符串相匹配),或使用工具,如awk或python?
此外,是否有一个字符串的解决方案可以很容易地扩展为正则表达式?
首先,我已经阅读了许多带有 if 子句的帖子(见底部)以在文件中搜索特定字符串并按照 1to1 的顺序关注这些帖子,但是我无法让我的脚本正常工作。/etc/fstab如果尚不存在,我想输入:
#!/bin/bash
fstab=/etc/fstab
if grep -q "poky-disc" "$fstab"
then
echo "#poky-disc" >> /etc/fstab
echo "/dev/sdb1 /media/poky ext4 defaults 0 2" >> /etc/fstab
else
echo "Entry in fstab exists."
fi
Run Code Online (Sandbox Code Playgroud)
提前感谢您的帮助。这些是类似的帖子,并没有进一步帮助我:
我正在写一个ksh脚本.我在目录中有一对html文件,我需要检查文件是否包含两个字符串之一(字符串是互斥的).然后,我根据它们包含的两个字符串中的哪一个重命名文件.
测试时,我能够在.txt文件上使用以下代码,但在测试.html文件中的字符串时,功能不再有效:
outageString='Scheduled Outage List'
jobString='Scheduled Job List'
for file in `ls -1t $fileNameFormat | head -n 2`
do
if grep -xq "$outageString" "$file"; then
mv "$file" "$outageFileName"
elif grep -xq "$jobString" "$file"; then
mv "$file" "$jobFileName"
fi
done
Run Code Online (Sandbox Code Playgroud)
注意:我已经ls独立测试了上面的命令,并返回了相应的文件.
文件内容:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>
OUS: Scheduled Outage List
</title>
</head>
<body>
<h3>
OUS: Scheduled Outage List
</h3>
.
.
.
Run Code Online (Sandbox Code Playgroud)
问:有没有人知道为什么grep在搜索两个文件中的字符串时没有返回适当的值(即,为什么grep不识别文件中存在字符串)?
类似问题:如何使用Bash …
我正在使用shell/perl搜索一个不应该包含此字符串"section"的文件.
grep -vl如果字符串存在,请帮我找到way 命令返回文件名.