Shell Script: поиск нескольких строк в текстовом файле и отображение строки, содержащей строку - PullRequest
0 голосов
/ 16 февраля 2012

Я очень новичок в мире сценариев оболочки.Я провел некоторые исследования по этому вопросу, но, похоже, пока не работает.

Я пытаюсь сделать так, чтобы у меня было два txt-файла.Я хочу найти все строки из файла A в файле B и отобразить все строки из файла B, в котором есть строки.

Пока у меня есть только это (пожалуйста, не смейтесь)...

#!bin/sh
for LINE in 'cat $1'
do
grep '$LINE' $2
done

Думаю, я пытаюсь сделать его динамичным, поэтому я могу выполнить что-то вроде этого

./script.ksh fileA.txt fileB.txt

Любое предложение будет оценено и большое спасибо!

Ответы [ 3 ]

3 голосов
/ 16 февраля 2012

Нет необходимости в скриптах:

grep -f $1 $2
0 голосов
/ 27 февраля 2015

mate, ваша первая строка содержит две ошибки , должно быть так:

#!  /bin/sh  

Я поставил дополнительное пространство, чтобы вы увидели разницу, это может быть причиной того, что ваш скрипт не работает.

Ничего страшного, опечатки случаются, и Bash может быть очень реальным PIA в отношении пробелов.

Кстати, а как же старый добрый diff?

diff file1 file2

man 1 diff

;)

0 голосов
/ 16 февраля 2012

Вы были очень близки к своей цели, но в вашем коде есть небольшие ошибки.

Это должно работать:

#!/bin/sh
for LINE in `cat $1`
do
    grep "$LINE" $2
done

Вот пример:

fileA.txt:

Hi
Hello
Hairy
Harry
Hates
His
Home

fileB.txt:

James Bond likes Harry
Sylvia is cool
Fiona is mad
Hello there
Hairy toenails

Выход:

Hello there
Hairy toenails
James Bond likes Harry
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...