while read line do echo $line calendar_date=$(cut -d\ -f1 $line) hr_of_day=$(cut -d\ -f2 $line) echo "date: $calendar_date hr: $hr_of_day" done < $FILE
Ich erhalte folgende Fehlermeldung:
date: hr: 2011-06-30 | 23 cut: 2011-06-30: No such file or directory cut: |: No such file or directory cut: 23: No such file or directory
Haben Sie die manuelle Eingabe von "cut" nachgeschlagen? Haben Sie versucht, die Bedeutung der Fehlermeldung zu verstehen? Was hast du versucht?
MariusMatutiae vor 9 Jahren
1
$ line wird als Dateiparameter gelesen. Es ist möglich, etwas wie `hr_of_day = $ (echo" $ line "| cut -d \ -f2)` zu schreiben, wenn Sie in Ihrem eingehenden Text keine Anführungszeichen haben.
le_top vor 8 Jahren
0
2 Antworten auf die Frage
4
choroba
cutversteht das $lineArgument als Dateinamen. Wenn Ihre Shell Bash ist, können Sie das <<<Hier-Wort verwenden:
cut -d' ' -f1 <<< "$line"
Es ist jedoch nicht notwendig, externe Befehle aufzurufen. Bash kann dies mit der Parametersubstitution tun:
date=$ # Delete from | to the right. hour=$ # Delete up to |.
1
Rohit Malgaonkar
auf dem Mac OS X-Terminal
test="$(echo '1\2\2016' | cut -d '\' -f3-)" echo "year:$test" prints year from test with an echo string year:2016 or echo "year:"$(echo '1\2\2016' | cut -d '\' -f3-)"" prints year from test with an echo string year:2016