bash Suche nach einer Zeichenkette in jeder Zeile der Datei
Ich versuche das, was scheint wie eine sehr einfache Aufgabe: verwenden Sie bash zum durchsuchen von Dateien nach Zeichenfolgen, und wenn Sie existieren, diese Ausgabe in eine andere Datei. Es könnte sein, jetlag, aber dieser sollte funktionieren:
#!/bin/bash
cnty=CNTRY
for line in $(cat wheatvrice.csv); do
if [[ $line = *$cnty* ]]
then
echo $line >> wr_imp.csv
fi
done
Ich habe auch versucht, diese auf Vollständigkeit:
#!/bin/bash
cnty=CNTRY
for line in $(cat wheatvrice.csv); do
case $line in
*"$cnty"*) echo $line >> wr_imp.csv;;
*) echo "no";;
esac
done
beide Ausgabe alles, unabhängig davon, ob die Zeile enthält CNTRY oder nicht, und ich bin mit kopieren/einfügen aus scheinbar verlässlichen Quellen, so scheint es ganz einfach über bash-ness, die ich bin fehlt?
- für was es Wert ist, einige Zeilen: <br>Brasilien,CNTRY-Durchschnitt,1989.428053,0.875353691,2899.968733,531.652993 <br> diese sind die, die ich will, und andere sind <br> Kambodscha,Pouthisat,,,3857.124865,122.266868 <br> und diese sind nicht die, die ich will
- definitiv jetlag. mit grep
- jetlag ist meine Hündin 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht mit bash, grep verwenden.
$cnty
?CNTRY
, vielleicht sollten Sie nur verwenden, die ausdrücklich zu.Während ich würde vorschlagen, einfach mit grep zu, die Frage ist offen, warum Sie Ansatz hat nicht funktioniert. Hier eine selbst-Referentielle änderung Ihrer zweiten Ansatz - mit Schlüsselwort 'bash', um auf übereinstimmung selbst:
Der Knackpunkt ist
while read -r line ... < FILE
. Ihr Befehl mit cat beinhaltet den String aufteilen, so dass jedes einzelne Wort verarbeitet wird, in der Schleife, nicht jede Zeile.Das gleiche problem in Beispiel 1.