Дополнительно
Перебор содержимого файла в Bash
Как выполнить итерацию каждой строки текстового файла с помощью Bash?
С помощью этого сценария:
echo "Start!"
for p in (peptides.txt)
do
echo "${p}"
done
Я получаю такой вывод на экран:
Start!
./runPep.sh: line 3: syntax error near unexpected token `('
./runPep.sh: line 3: `for p in (peptides.txt)'
(Позже я захочу сделать с $p
что-то более сложное, чем просто вывод на экран).
Переменная среды SHELL является (из env):
SHELL=/bin/bash
/bin/bash --version
выход:
GNU bash, version 3.1.17(1)-release (x86_64-suse-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
cat /proc/version
output:
Linux version 2.6.18.2-34-default (geeko@buildhost) (gcc version 4.1.2 20061115 (prerelease) (SUSE Linux)) #1 SMP Mon Nov 27 11:46:27 UTC 2006
Файл peptides.txt содержит:
RKEKNVQ
IPKKLLQK
QYFHQLEKMNVK
IPKKLLQK
GDLSTALEVAIDCYEK
QYFHQLEKMNVKIPENIYR
RKEKNVQ
VLAKHGKLQDAIN
ILGFMK
LEDVALQILL
1228
12
Один из способов сделать это:
и вариант с одной фразой:
Эти опции пропускают последнюю строку файла, если в ней нет перевода строки.
Вы можете избежать этого следующим образом:
Вариант 1a: Цикл While: По одной строке за раз: Перенаправление ввода
Опция 1b: Цикл While: По одной строке за раз: Открыть файл, прочитать из дескриптора файла (в данном случае дескриптор файла #4).
Это не лучше, чем другие ответы, но еще один способ, чтобы получить работу в файл без пробелов (см. комментарии). Я считаю, что мне часто нужен один-лайнеры, чтобы копаться в списки в текстовых файлах, не используя отдельных файлах скрипта.
Этот формат позволяет мне поставить все это в одной командной строке. Изменить "Эхо $слово" Какая часть к тому, что вы хотите, и вы можете выдать несколько команд, разделенных точкой с запятой. В следующем примере используется файл'ы содержание в качестве аргументов в двух других сценариев, которые вы писали.
Или если вы собираетесь использовать это как редактор потока (узнать СЭД) вы можете сбросить вывода в другой файл следующим образом.
Я've использовали их как написано выше, потому что я использовал текстовые файлы, где я'вэ, созданных их с одно слово в каждой строке. (См. комментарии) Если у вас есть пробелы, которые вы не'т хотим, чтобы разделять ваших слов/строк, это становится немного страшнее, но ту же команду по-прежнему работает следующим образом:
Это просто говорит оболочке для разделения на строки, а не пробелы, а затем возвращает в среду до того, что было ранее. На данный момент, Вы, возможно, захотите положить все это в сценарий оболочки, а не сжимая все в одну строку, хотя.
Удачи!
Еще несколько вещей, которые не охвачены другими ответы:
Чтение из файла с разделителями
Чтение из вывода другой команды, используя процесс замещения
Использовать цикл while, как это:
Если вы Don'т хотите, чтобы ваши читать, чтобы быть сломанной символ новой строки, используйте -
Затем запустите скрипт с именем файла в качестве параметра.
Предположим, у вас есть этот файл:
Есть четыре элемента, которые будет изменять значение выходной файл прочитан многими Баш решений:
Если вы хотите, чтобы текстовый файл построчно, включая пустые строки и завершения линии без CR, вы должны использовать цикл while, и вы должны иметь альтернативный тест для итоговой строки.
Вот несколько методов, которые могут изменить файл (в сравнении с тем, что " кот " возвращает):
Вот мой реальный пример из жизни, как петля линиям другого выхода программы, проверить на подстроки, падение двойные кавычки из переменной, использовать эту переменную вне цикла. Я думаю, довольно многие спрашивают эти вопросы рано или поздно.
Это скорее очень поздно, но с мыслью, что это может помочь кому-то, я добавляю ответ. Также это может не быть лучший способ.
начальник команды
может быть использован с `-н аргументом для чтения Нлинии от начала файла и команду также "хвост" может быть использован для чтения снизу. Теперь, чтобы принести энной строку из файла, то руководителя n строк, передать сведения в хвост только 1 строку из водопроводной данных.@Петр: это может работать для вас
Это будет выход-