schneiden letzten n Zeichen in einer Zeichenfolge mit shell-Skript
Entfernen Sie alle n Zeichen aus einer bestimmten Zeichenkette mit shell-Skripten,
ssl01:49188,,,
ssl01:49188,
ssl01:49188,,,,,
ssl01:49188,ssl999999:49188,,,,,
ssl01:49188,abcf999:49188,,,,,
Den Ausgang wird in folgendem format sein
ssl01:49188
ssl01:49188
ssl01:49188
ssl01:49188,ssl999999:49188
ssl01:49188,abcf999:49188
InformationsquelleAutor anish | 2013-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Antwort auf die Titel, die Sie Frage mit gibt schneiden letzten n Zeichen in einem string, können Sie die substring-Extraktion-Funktion in der Bash.
Basiert jedoch auf Ihre Beispiele, die Sie erscheinen zu wollen, entfernen Sie alle nachfolgenden Kommas, in dem Fall könnten Sie
sed 's/,*$//'
.oder, für eine rein Bash-Lösung, die Sie nutzen könnten substring Entfernung:
Ich würde das
sed
Ansatz, wenn die transformation angewendet werden muss, um eine ganze Datei, und die bash substring entfernen Ansatz, wenn der Ziel-string bereits in einer bash-variable.für ältere Versionen: nutzen #item zu bekommen Länge der Zeichenfolge, so dass, wenn Sie versuchen, Sie zu entfernen, letzten n chars, Mach es wie item="abcdefgh" echo ${item:0:${#item}-n};
Ich weiß, das ist trivial, aber dachte ich wäre es hier, weil es mir ausgelöst. Stellen Sie sicher, Sie setzen Sie das Semikolon am Ende nur wie rivu hat es! Ich vergaß das Semikolon und habe alle möglichen Fehler!
Es gibt keine Notwendigkeit für Sie ein Semikolon am Ende, aber Sie müssen die Semikolons separate mehrere Befehle in einer einzigen Zeile. rivu voller Bash-3.x Beispiel in einer einzigen Zeile ist also:
n=2; item='abcdefgh'; echo "${item:0:${#item}-n}"
InformationsquelleAutor Shawn Chin
Mit
sed
:sed
. Eine POSIX-konforme Reformulierung istsed 's/,\{1,\}//'
. Eine version, die funktioniert mit GNU-und BSD/OSXsed
:sed -E 's/,+//'
InformationsquelleAutor cmbuckley
Mit sed:
InformationsquelleAutor Guru
Ich denke, Sie müssen entfernen Sie diese unnötige
,
'sgetestet:
InformationsquelleAutor Vijay