Поиск всех строк из input.file по всем файлам в target-директории (ях) / и печать (Bash) - PullRequest
0 голосов
/ 07 декабря 2018

Мне нужно найти все файлы в целевой директории и распечатать все подходящие найденные строки из входного файла.Кажется, я не могу этого сделать.Ниже приведен пример сценария и проблема:

$ tree .
.
├── input_file.txt
└── target-dir
    ├── target-file-A.txt
    ├── target-file-B.txt
    ├── target-subdir-A
    │   ├── target-file-A.txt
    │   └── target-file-B.txt
    └── target-subdir-B
        ├── target-file-A.txt
        └── target-file-B.txt

$ cat input_file.txt
abc
cba
bca
acb

$ cat target-dir/target-file-A.txt
abc
cba
bca
acb
$ cat target-dir/target-file-B.txt
acb
cba
abc
bca
0101
1010

$ grep -f input_file.txt -r .

./input_file.txt:acb

./target-dir/target-file-A.txt:acb
./target-dir/target-file-B.txt:acb

./target-dir/target-subdir-A/target-file-A.txt:acb
./target-dir/target-subdir-A/target-file-B.txt:acb

./target-dir/target-subdir-B/target-file-A.txt:acb
./target-dir/target-subdir-B/target-file-B.txt:acb

Я вижу только одну напечатанную строку (первую), а остальные игнорируются.Как я могу распечатать все совпадающие строки?Мне нужно искать в тоннах сетевых журналов все попадания в IOC (IP / URL), и это оказывается сложнее, чем предполагалось. РЕДАКТИРОВАТЬ: Я должен упомянуть, что это «Ubuntu 16.04.5 LTS \ n \ l» работает под Windows 10 как WSL .

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Пожалуйста, не убивай меня.Возможно, кто-то найдет этот пост полезным в любом случае.

Решение: LINE ENCODING.Так как я изначально работаю в Windows, мой Sublime Text имеет значение «Концы строк Windows», а WSL - Unix, поэтому не понимает эти окончания строк.После переключения опции в редакторе все работает нормально:

$ cat -A input_file_changed.txt
abc$
cba$
bca$
acb

$ cat -A input_file.txt
abc^M$
cba^M$
bca^M$
acb

    $ grep -f input_file_changed.txt -r .
    ./input_file.txt:abc
    ./input_file.txt:cba
    ./input_file.txt:bca
    ./input_file.txt:acb
    ./input_file_changed.txt:abc
    ./input_file_changed.txt:cba
    ./input_file_changed.txt:bca
    ./input_file_changed.txt:acb
    ./target-dir/target-file-A.txt:abc
    ./target-dir/target-file-A.txt:cba
    ./target-dir/target-file-A.txt:bca
    ./target-dir/target-file-A.txt:acb
    ./target-dir/target-file-B.txt:acb
    ./target-dir/target-file-B.txt:cba
    ./target-dir/target-file-B.txt:abc
    ./target-dir/target-file-B.txt:bca
    ./target-dir/target-subdir-A/target-file-A.txt:abc
    ./target-dir/target-subdir-A/target-file-A.txt:cba
    ./target-dir/target-subdir-A/target-file-A.txt:bca
    ./target-dir/target-subdir-A/target-file-A.txt:acb
    ./target-dir/target-subdir-A/target-file-B.txt:acb
    ./target-dir/target-subdir-A/target-file-B.txt:cba
    ./target-dir/target-subdir-A/target-file-B.txt:abc
    ./target-dir/target-subdir-A/target-file-B.txt:bca
    ./target-dir/target-subdir-B/target-file-A.txt:abc
    ./target-dir/target-subdir-B/target-file-A.txt:cba
    ./target-dir/target-subdir-B/target-file-A.txt:bca
    ./target-dir/target-subdir-B/target-file-A.txt:acb
    ./target-dir/target-subdir-B/target-file-B.txt:acb
    ./target-dir/target-subdir-B/target-file-B.txt:cba
    ./target-dir/target-subdir-B/target-file-B.txt:abc
    ./target-dir/target-subdir-B/target-file-B.txt:bca
0 голосов
/ 07 декабря 2018

Ваша команда grep:

grep -f input_file.txt -r .

должна работать так, как вы ожидаете, и соответствовать всем строкам в файле input_file.txt, разделенных новыми строками во всех файлах в ./.В этом случае я подозрительные файлы с конечными строками Windows были созданы под Windows.Вы можете попробовать следующее, чтобы убедиться, что у вас есть правильные конечные строки UNIX:

find ./ -type f -print0 | xargs -0 dos2unix

И попробуйте снова.

...