grep пустой выходной файл - PullRequest
       13

grep пустой выходной файл

0 голосов
/ 03 ноября 2019

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

Вот мой сценарий:

#!/bin/bash

# takes user input.
echo "Input substance:"
read substance
echo "Listing media without $substance:" 
cd media

# finds names of files that don't feature the substance given, then puts them inside an array.
searchresult=($(grep -L "$substance" *))

# iterates the array and prints the first line of each - contains both the number and the medium name. 
# however, some files start with "Microorganisms" and the actual number and name feature after several empty lines
# the script checks for that occurence - and prints the first line that doesnt match these criteria.

for i in "${searchresult[@]}"
do
grep -m 1 -v  "Microorganisms\|^$" $i
done >> output.txt

Iпопытался переместить >>output.txt вправо после строки grep внутри цикла, попытался переключить >> на > и 2>&1, попытался использовать tee. Не уходи.

Честно говоря, я чувствую себя совершенно застрявшим в том, что это может быть за проблема. Я уверен, что кое-что мне не хватает, но я не настолько хорош, чтобы это заметить. Я был бы очень признателен за любую помощь.

РЕДАКТИРОВАТЬ: Добавлены файлы, чтобы лучше проиллюстрировать то, с чем я работаю. Примеры входных данных, которые я пробовал: Glucose, Yeast extract, Agar. Ссылка на файлы [140kB] - папка была предварительно разархивирована.

Скрипт получил полные разрешения для выполнения. Я не думаю, что вывод переписывается, потому что даже если я не выполняю итерацию и просто запускаю одну строку цикла, файл пуст.

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