Передача строк из текстового файла списка файлов в или в качестве аргументов

Решение, которое я принял:

if svn diff -r BASE:HEAD./doc/guidelines/typesetter-guidelines.tex | grep -q ^
    then echo "Out of date"
    else echo "Updated"
fi 

Есть ли противопоказания? Могу ли я сделать лучше, чем это?

4
26.07.2019, 10:30
2 ответа

Использование контура while read:

while read -r file1 file2 trash; do
  something with "$file1" and "$file2"
done < /path/to/input_file

Это будет читать ваш входной файл построчно, устанавливая file1и file2с первым и вторым столбцами соответственно. trash, вероятно, не нужен, но мне нравится включать его для обработки вещей, с которыми вы можете столкнуться, таких как:

file1.fastq.gz file2.fastq.gz foo

Если ваш файл содержит строку, подобную приведенной выше, и вы не включили переменную trash(или аналогичную ), ваша переменная file2будет установлена ​​на:file2.fastq.gz foo

8
27.01.2020, 20:47

xargsэто еще один способ, если ваш формат файла точно такой, как вы говорите :два пробела -разделенные поля в строке (с учетом ...многоточия ).

< input xargs -n2./script-here

... прочитает файл с именем inputстрока -по строке -и передаст два аргумента в ./script-here.

Вы можете изменить перенаправление:

xargs -n2./script-here < input

... если это имеет для вас лучший интуитивный смысл.

4
27.01.2020, 20:47

Теги

Похожие вопросы