
Мне нужно написать скрипт оболочки для чтения текстового файла и выполнения над ним операций по подсчету всех различных слов в текстовом файле.
У меня есть все команды, необходимые для выполнения этих операций, но как мне ввести текстовый файл в скрипт оболочки, чтобы затем использовать его с помощью команд?
Итак, я использую следующую команду: как мне сделать 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.