hängt die n-te Zeile aus der Datei x an das Ende der Datei y an

hängt die n-te Zeile aus der Datei x an das Ende der Datei y an

Ich wurde gebeten, einen Befehl zu schreiben, der die n-te Zeile ( MYN) einer Datei ( x) an eine andere Datei ( y) anfügt. Folgendes habe ich bisher getan:

MYN=4
hey=$(awk 'NR==$MYN' x)
echo "$hey" >> y 

Aber warum funktioniert das nicht?

Antwort1

Wenn Ihr Ziel darin besteht, eine Variable zu übergeben, awkum sie im Skript zu verwenden, können Sie awkdie folgende -vOption verwenden:

hey=$(awk -v MYN=$MYN 'NR==MYN' x)

Antwort2

Ich sehe Ihr Problem, Sie verwenden einfache Anführungszeichen. Sie lassen die Bash-Variable nicht $MYNerweitern. Sie können die Sache komplizierter machen, indem Sie awkeine neue Variable angeben, oder weil es so einfach ist, können Sie einfach auf doppelte Anführungszeichen umsteigen:

awk "NR==$MYN" x

ich hattegebrauchtsedaber ich kann keine offensichtlichen Probleme mit Ihrer Logik erkennen

MYN=4
sed "${MYN}q;d" x >> y

Es scheint wie erwartet zu funktionieren:

$ for i in $(seq 1 10); do echo $i >> x; done
$ sed "${MYN}q;d" x
4

verwandte Informationen