小编use*_*834的帖子

如何使用 grep 检查文件中是否有换行符的特定字符串?

我在 bash 脚本文件中有一个字符串变量,如下所示:

string="

test1

test2

"
Run Code Online (Sandbox Code Playgroud)

我想检查一个文件是否test.txt包含这个特定的字符串(包括换行符。即,如果它只包含以下内容,它应该失败:

this is a test:
test1

test2
and another one
Run Code Online (Sandbox Code Playgroud)

因为 test1 上方和 test2 下方的换行符不存在。

(我之所以要检查这个是因为我想检查某段代码是否在源文件中,如果没有,则添加它。)


以下不起作用:

string="
    
    test1
    
    test2
    
    "
if ! grep -q string "test.txt"; then
    echo "$string" >> test.txt
fi
Run Code Online (Sandbox Code Playgroud)

这可以正确地将字符串添加到文件中,但即使已经添加了该字符串,它也会执行此操作。此外,当我将字符串更改为没有换行符时,它会正确执行。


编辑:

下面@terdon 和@steeldriver 的答案适用于我上面写的字符串示例,但由于某种原因,它们不适用于这个更实际的示例:

string="                                                                
                                                               
if [ -f ~/.script ]; then                            
        . ~/.script         
fi

"  
Run Code Online (Sandbox Code Playgroud)

command-line bash grep text-processing

6
推荐指数
1
解决办法
2718
查看次数

标签 统计

bash ×1

command-line ×1

grep ×1

text-processing ×1