簡體   English   中英

使用 grep 搜索字符串

[英]searching string using grep

我正在使用 grep 搜索字符串,但 output 顯示不需要的文件以及正確的文件。

例如:- xyz_utils.c 包含 SAM22 關鍵字。

grep命令:
ret=$(grep -irwE "${excluded_files[@]/#/--exclude=}" "\\b${LIST[$A]}\\b|${LIST[$A]}[-_.*>@^:.,~%&\(\)\{}]|\\b${LIST[$A]}\\b" \
                "$package/" |grep -v "$filters\|${excluded_dir[@]}" -c)

LIST[] -> 包含需要搜索的單詞列表。

顯示不需要的文件:
/home/sampath/SAM20_1.0.0/LICENSE.BSD:      from this software without specific prior written permission.
/home/sampath/SAM20_1.0.0/LICENSE.BSD:  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
/home/sampath/SAM20_1.0.0/LICENSE.BSD:  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
/home/sampath/SAM20_1.0.0/LICENSE.BSD:  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
/home/sampath/SAM20_1.0.0/LICENSE.BSD:  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
/home/sampath/SAM20_1.0.0/LICENSE.BSD:  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.
.
/home/sampath/SAM20_1.0.0/README.txt:    Static libraries included in SAM software package:
/home/sampath/SAM20_1.0.0/README.txt:        Warning: This option should never be enabled in a production environment
.
.
顯示正確的文件:
/home/sampath/SAM20_1.0.0/xyz_utils.c:SAM22

如果我想在一組文件中搜索一個字符串,比如SAM22 ,我會這樣做:

find /<directory> -name "*.<extension>" -exec grep "SAM22" {} /dev/null \;

供您參考: /dev/null是一個巧妙的技巧:如您所知, grep "entry" <filename>結果顯示entry (無文件名),而grep "entry" <filename1> <filename2>顯示filename1:entry ,所以通過添加/dev/null ,我可以強制 output 也顯示文件名。
如果你說“我不需要包含SAM22的整行,只需要條目本身,這可以使用-o開關來處理:

find /<directory> -name "*.<extension>" -exec grep -o "SAM22" {} /dev/null \;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM