Você pode usar uma substituição de comandos simples :
variable='cat text.txt'
echo $variable
Ou no bash:
variable=$(cat text.txt)
O mesmo que:
variable='tr '[A-Z]' '[a-z]' < text.txt'
Eu preciso escrever um script de shell para ler um arquivo de texto e executar operações nele para contar todas as palavras distintas no arquivo de texto.
Eu tenho todos os comandos necessários para fazer essas operações, mas como eu iria introduzir o arquivo de texto no shell script para usar os comandos?
então, um comando que eu uso é isto, como eu iria sobre ter o text.txt como uma variável para que eu pudesse simplesmente chamar a variável no script?
tr '[A-Z]' '[a-z]' < text.txt
Você pode usar uma substituição de comandos simples :
variable='cat text.txt'
echo $variable
Ou no bash:
variable=$(cat text.txt)
O mesmo que:
variable='tr '[A-Z]' '[a-z]' < text.txt'
Ferramentas como tr e wc podem operar em arquivos; você não tem para passar strings para seu stdin. Para responder à sua pergunta:
how would I go about having the text.txt as a variable so that I can just call the variable in the script?
A sintaxe para isso é:
input=text.txt # or other file name
tr '[A-Z]' '[a-z]' $input
Exemplo de arquivo
foo
bar
foo bar
foobar f0o b@rred
Gerado via
echo -e 'foo\n\t\tbar\n foo bar\nfoobar f0o b@arred' | tee -a /tmp/foo.bar
Continência do arquivo na variável bash ( short-hand para $(cat file)
)
v="$(</tmp/foo.bar)"
Use variável como entrada (sem caracteres não imprimíveis) para outro comando
sed 's#@#a#; s@0@o@' <<<"${v//[![[:print:]]]}" | tail -1
Deve produzir a última linha, substituindo @
por a
e 0
por o
foobar foo barred
Também um desejo meu de olhar para mkfifo
... boa sorte com a análise text.txt.