2016-09-02 5 views
3

Hallo Ich möchte das letzte Komma aus einer Zeile entfernen. Zum Beispiel:Wie man das letzte Komma aus der Zeile in bash mit "sed oder awk" entfernt

Eingang:

This,is,a,test 

gewünschte Ausgabe:

This,is,a test 

Ich bin in der Lage letztes Komma zu entfernen, wenn es ist auch das letzte Zeichen der Zeichenfolge unter Befehl: (Dies ist jedoch nicht ich will)

Gleicher Befehl funktioniert nicht, wenn es mehr Zeichen gibt, die letzte co vorbeikommen MMA in der Schlange.

echo "This,is,a,test" |sed 's/,$//' 
This,is,a,test 

Ich bin in der Lage, die Ergebnisse mit schmutzige Art und Weise zu erreichen, indem mehrere Befehle aufrufen, jede Alternative das gleiche zu erreichen, awk oder sed regex? (Dies ist, ich will)

echo "This,is,a,test" |rev |sed 's/,/ /' |rev 
This,is,a test 
+0

Mögliches Duplikat von [Suchen und in bash mit regulären Ausdrücken ersetzen] (http://stackoverflow.com/questions/13043344/search-and-replace-in-bash-using-regular-expressions) –

+0

Es Es ist nicht nötig, einen sed, awk usw. Prozess zu erzeugen, da es eine reine Bash-Lösung gibt: http://stackoverflow.com/a/22261454/1671066 –

Antwort

2
$ echo "This,is,a,test" | sed 's/\(.*\),/\1 /' 
This,is,a test 

mit Lookbehind,

$ echo "This,is,a,test" | perl -pe 's/.*\K,/ /' 
This,is,a test 

* gierig ist, versucht, so viel wie möglich zu entsprechen.

5

Sie verwenden können Eine Regex, die Nicht-Komma entspricht, und erfasst diese Gruppe und stellt sie dann in der Ersetzung wieder her.

echo "This,is,a,test" |sed 's/,\([^,]*\)$/ \1/' 

Ausgang:

This,is,a test 
1

In Gnu AWK auch seit dem Stichwort:

$ echo This,is,a,test|awk '$0=gensub(/^(.*),/,"\\1 ","g",$0)' 
This,is,a test 
4

die Antwort auf regex Alle basieren. Hier ist eine nicht-regex Weise letztes Komma zu entfernen:

s='This,is,a,test' 
awk 'BEGIN{FS=OFS=","} {$(NF-1)=$(NF-1) " " $NF; NF--} 1' <<< "$s" 

This,is,a test 
1

Eine Möglichkeit, dies zu tun durch Bash Parameter Expansion Verwendung ist.

$ s="This,is,a,test" 
$ echo "${s%,*} ${s##*,}" 
This,is,a test 
Verwandte Themen