
Ich muss ein Shell-Skript schreiben, um eine Textdatei einzulesen und Operationen daran auszuführen, um alle unterschiedlichen Wörter in der Textdatei zu zählen.
Ich verfüge über alle erforderlichen Befehle, um diese Vorgänge auszuführen. Wie kann ich jedoch die Textdatei in das Shell-Skript eingeben, um sie dann über die Befehle zu verwenden?
Einer der von mir verwendeten Befehle ist dieser: Wie gehe ich vor, um die Datei text.txt als Variable zu haben, sodass ich die Variable einfach im Skript aufrufen kann?
tr '[A-Z]' '[a-z]' < text.txt
Antwort1
Sie können einfacheBefehlsersetzung:
variable=`cat text.txt`
echo $variable
Oder in Bash:
variable=$(cat text.txt)
Das gleiche mit:
variable=`tr '[A-Z]' '[a-z]' < text.txt`
Antwort2
Tools wie tr und wc können Dateien bearbeiten. Sie müssen nichthabenum Strings an ihren Standard-DIN zu übergeben. Um Ihre Frage zu beantworten:
wie kann ich vorgehen, um die Datei text.txt als Variable zu haben, sodass ich die Variable einfach im Skript aufrufen kann?
Die Syntax hierfür lautet:
input=text.txt # or other file name
tr '[A-Z]' '[a-z]' $input
Antwort3
Beispieldatei
foo
bar
foo bar
foobar f0o b@rred
Generiert über
echo -e 'foo\n\t\tbar\n foo bar\nfoobar f0o b@arred' | tee -a /tmp/foo.bar
Dateikontinenz in Bash-Variable (Kurzschriftfür $(cat file)
)
v="$(</tmp/foo.bar)"
Variable als Eingabe (ohne nicht druckbare Zeichen) für einen anderen Befehl verwenden
sed 's#@#a#; s@0@o@' <<<"${v//[![[:print:]]]}" | tail -1
Die letzte Zeile sollte ausgegeben werden und @
durch a
und 0
durch ersetzt werden.o
foobar foo barred
Auch einer meiner Wünsche, den ich mir ansehen möchte mkfifo
… viel Glück beim Parsen von text.txt.