Сопоставьте содержимое, прочитав файл, используя bash grep, строку, заключенную в специальный символ [и] - PullRequest
0 голосов
/ 21 ноября 2018

Я хочу сопоставить строку, содержащую [xyz] или [abc] из файла, используя bash grep, который содержит как:

TEST_FILE:

Testing of pattern line no 1 [xyz]
Hi, this is just test file contains abc and/or xyz etc..

Пробный код:

if ( grep -iq "\[xyz\]" "$TEST_FILE" ); then
  PATTERN_MATCH="xyz matched"
elif ( grep -iq "\[abc\]" "$TEST_FILE" ); then
  PATTERN_MATCH="abc matched"
fi

Проблема в том, что она всегда совпадает, хотя, передавая xyz / abc вместо [xyz] / [abc].

Содержимое файла может соответствовать регистронезависимому [XYZ] или [ABC]но только с XYZ или ABC.[и] специальный символ, заключенный в строку.Может ли кто-то указать проблему или решение для того же самого из-за [и] специального символа?Я пробовал другие способы, используя grep и egrep, но не повезло!

1 Ответ

0 голосов
/ 21 ноября 2018

Вы пытаетесь проверить код выхода grep (который должен быть проверен с помощью $?).Здесь я переписал ваш код для работы:

#!/bin/bash

TEST_FILE='./input.txt'

[[ $( grep -i '\[xyz\]' "$TEST_FILE" ) ]] && PATTERN_MATCH="xyz matched"
[[ $( grep -i '\[abc\]' "$TEST_FILE" ) ]] && PATTERN_MATCH="abc matched"

echo $PATTERN_MATCH

Надеюсь, это поможет приятель!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...