Как прочитать файл в скрипт оболочки как переменную?

Как прочитать файл в скрипт оболочки как переменную?

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

У меня есть все команды, необходимые для выполнения этих операций, но как мне ввести текстовый файл в скрипт оболочки, чтобы затем использовать его с помощью команд?

Итак, я использую следующую команду: как мне сделать text.txt переменной, чтобы я мог просто вызвать переменную в скрипте?

tr '[A-Z]' '[a-z]' < text.txt

решение1

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

variable=`cat text.txt`
echo $variable

Или в bash:

variable=$(cat text.txt)

То же самое с:

variable=`tr '[A-Z]' '[a-z]' < text.txt`

решение2

Такие инструменты, как tr и wc, могут работать с файлами; вам не нужноиметьдля передачи строк в их stdin. Чтобы ответить на ваш вопрос:

как мне сделать text.txt переменной, чтобы я мог просто вызвать переменную в скрипте?

Синтаксис для этого следующий:

input=text.txt # or other file name
tr '[A-Z]' '[a-z]' $input

решение3

Пример файла

foo
        bar
    foo bar
foobar f0o b@rred

Сгенерировано через

echo -e 'foo\n\t\tbar\n    foo bar\nfoobar f0o b@arred' | tee -a /tmp/foo.bar

Содержание файла в переменной bash (стенографиядля $(cat file))

v="$(</tmp/foo.bar)"

Использовать переменную в качестве входных данных (без непечатаемых символов) для другой команды

sed 's#@#a#; s@0@o@' <<<"${v//[![[:print:]]]}" | tail -1

Следует вывести последнюю строку, заменив @на aи 0наo

foobar foo barred

Еще одно мое пожелание — изучить mkfifo... удачи в разборе text.txt.

Связанный контент