Ich habe jede Menge Dateien aus meiner Lehrtätigkeit, die ich regelmäßig in OneDrive sichern möchte. Meine Kollegen sind schlecht darin, Dateien zu benennen, also müssen sie sie aufräumen, damit OneDrive sie übernehmen kann.
Ich verstehe nicht, wie ich ein Leerzeichen vor einem Punkt auswähle.
Ich versuche dies
bash-3.2$ echo "foo bar .pdf" | tr -s " \." '\.'
und das bekommen
foo.bar.pdf
statt foo bar.pdf
. Was ist falsch an meinem Befehl?
Antwort1
tr
ersetzteinzelZeichen durch einzelne Zeichen und Sie haben ihm gesagt, dass jedes Leerzeichen und jeder Punkt durch einen Punkt ersetzt werden soll (außer, dass -s
Leerzeichen+Punkt zu einer einzigen zu ersetzenden Einheit zusammengedrückt werden). Mit anderen Worten, ein Leerzeichen oder ein Punkt reicht aus, um Ihr auszulösen tr
.
Um Zeichenfolgen zu ersetzen, verwenden Sie sed
:
echo "foo bar .pdf" | sed 's/ \././g'
Hinweis: Ich habe „acts“ verwendet g
, weil tr
Sie „acts“ global verwendet haben und daher davon ausgegangen bin, dass Sie dies im Allgemeinen möchten (für diese bestimmte Zeichenfolge spielt es keine Rolle foo bar .pdf
).