
Nehmen Sie eine mehrzeilige Textdatei ( file1
) an, die Dateipfade enthält.
$ cat file1
./foo/foo
./foo/bar
./foo/baz
Ich möchte nur die Dateinamen speichern file2
und jedem Dateinamen einige Sonderzeichen voranstellen (z. B. [#
).
Ich weiß, dass ich dies mit einer einfachen For-Schleife erreichen kann, verstehe aber, dass dies als ungünstige Vorgehensweise gilt.
for line in $(cat file1); do
echo "[#" $(basename "$line") >> file2;
done
Ich glaube, diese Aufgabe kann sauberer über erledigt werden awk
, aber der folgende Code ist nur ein Fragment. Wie führe ich die obige Aufgabe mit aus awk
?
awk '{print "[#",$0=$(basename $0)}' $file1 > $file2
Antwort1
/
Als Feldtrennzeichen verwenden und das letzte Feld drucken:
$ awk -F/ '{print "[#"$NF}' file1
[#foo
[#bar
[#baz
Antwort2
sed -e 's|.*/|[#|' file1
Ergebnis
[#foo
[#bar
[#baz