模式匹配和比较

模式匹配和比较

我有一个包含这些句子的文件

Today is a holiday
May I go tomorrow 
No Holiday

我需要从中找到No Holiday,并且需要将其与另一个字符串进行比较,例如grep "No Holiday"!="Holiday"

我不知道正确的查询。我只是给出我需要的逻辑。

答案1

选出文件的最后一行并将其与字符串进行比较Holiday

holiday_line=$( sed -n '$p' file.txt )
if [ "$holiday_line" = 'Holiday' ]; then
   echo 'The holiday line says "Holiday"'
else
   echo 'The holiday line does not say just "Holiday"'
fi

或者,如果您想要第三行,请更改sed -n '$p'sed -n '3p'$p表示“打印最后一行”,而3p表示“打印第三行”。

如果您想要找到第一个包含字符串 的行Holiday,无论它位于文件中的哪个位置,请使用sed -n '/Holiday/{p;q;}'.表达式的/Holiday/{p;q;}意思是打印与模式匹配的行Holiday,然后退出。


grep按照评论中的要求使用:

if grep -q -wF 'No Holiday' file.txt; then
    echo 'The file contains the string "No Holiday"'
else
    echo '"No Holiday" was not found in the file'
fi

这类似于我对你上一个问题的答复

相关内容