Die Antwort auf das Entfernen von Leerzeichen mit sed hat die meiste Antwort, aber ich möchte
sed -i 's/[ \t]*$//' $1
um eine beliebige Anzahl von Dateiargumenten als Shell-Skript in der Befehlszeile verwenden zu können, einschließlich globaler Argumente. Angenommen, das Skript wird aufgerufen strip_trailing_whitespace
. Dann möchte ich beides können
strip_trailing_whitespace foo.cc bar.cc
und
strip_trailing_whitespace *.cc *.hh
um nachfolgende Leerzeichen aus allen Dateien des Formulars zu entfernen *.cc
und *.hh
. Argumente, die nicht auf der oben zitierten Antwort basieren, sind ebenfalls in Ordnung.
quelle
echo "$@"
. Wenn Sie den Parameter verwenden, wird er in keiner Weise geändert, sodass Sie$@
beliebig oft (oder auf einen anderen Parameter: positionell, speziell oder nicht) verweisen können .-i.bak
auch daran ... ganz zu schweigen davon, dass ich manchmal auf eine Variante vonsed
ohne-i
stoße :) ... +1, immer noch.sed
dass Schiffe mit OS X. Installieren Sie stattdessengnu-sed
(brew install gnu-sed
) und ersetztsed
mitgsed
in dem Befehl.Ich finde es einfach, sed mit xargs wie folgt zu verwenden:
find . -name "*.xml" | xargs sed -i 's/[ \t]*$//'
find . -type f | grep cc | xargs sed -i 's/[ \t]*$//'
quelle