cut: |: Keine solche Datei oder Verzeichnis

3038
mahidhar
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 
-1
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 

probiere dies (ähnlich wie oben)

calendar_date="$(cut -d '\' -f1 $line)" hr_of_day="$(cut -d '\' -f2 $line)" echo "date: $calendar_date hr: $hr_of_day" 

Für Input-Reads funktioniert dies mit Echo

while read x do echo $x | cut -c3,7 #echo $x | cut -c3,7 (for range of letters) done 
$ line wird als Dateiparameter gelesen. le_top vor 8 Jahren 0
ersten Beitrag bearbeitet Bitte versuchen Sie es uns und lassen Sie es uns wissen ... Rohit Malgaonkar vor 8 Jahren 0