Grep 在带有整个猫输出的文件中

Grep 在带有整个猫输出的文件中

我搜索/尝试编写简短的脚本(for if 循环)以通过整个 cat 输出在文件中执行 grep 操作。

我已经尝试过了

#!/bin/bash
find -name 'xmlrpc.php' -execdir bash -c '
if [ -e ".htaccess" ] ; then
if grep -qxf /home/tstepien/Desktop/code/testing/addthat.txt .htaccess
then
        echo found
else
        (cat /home/tstepien/Desktop/code/testing/addthat.txt && cat .htaccess) > .htaccess.post && mv .htaccess.post .htaccess
fi
fi' {} \;

但它是“grepping”中的所有单词addthat.txt

的例子addthat.txt

RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} /xmlrpc.php [NC]
RewriteRule .* - [F,L]

.htaccess(使用脚本之前)

==========
here code
==========

.htaccess (使用 script - soif语句后,如果再次运行,将显示“found”,并且不会重新添加 的内容addthat.txt

RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} /xmlrpc.php [NC]
RewriteRule .* - [F,L]
==========
here some code
==========

这意味着如果 in.htaccess中有文本,则不应将addthat.txt的内容addthat.txt添加到.htaccess.

答案1

您正在寻找的语法很接近:

grep -q -e "$(cat addthat.txt)" .htaccess

答案2

有人在这里写了这个答案,但现在已被删除。它就像魅力一样起作用。

grep -qxf /home/tstepien/Desktop/code/testing/addthat.txt .htaccess

-q 用于安静模式(仅退出代码)

-f 按提供的文件搜索

-x 用于整行搜索

相关内容