2016-08-04 2 views
0

UNIX, wie eine Linie zu entfernen, die unten nur durch Kommas und Raum hat Am BeispielUNIX, wie eine Linie zu entfernen, die nur durch Kommas und Raum hat

dfasdfs,fasfsafsaf,dfasfasfs,sfd 
dsfsafsa,fsafafsad 
safsafas,fsafsaf, 
,,, 
asfdasf,asdfddsfas, 

I [,,,] Zeile entfernen muß. Bitte beachten Sie, ein Platz kann am Anfang oder Ende oder zwischen

sed -i '/^[ ,]*$/d' file --- > Didn't work 

können Sie bitte helfen? Dank

+0

Ihre 'sed' Befehl sollte funktionieren, wenn es nur Leerzeichen um Kommas sind. Können Sie die Ausgabe von 'cat -vte file' anzeigen? – anubhava

+1

Was bedeutet" nicht funktioniert "? Keine Ausgabe, falsche Ausgabe, Fehlermeldungen, noch etwas? Wenn du dein Auto in die Garage bringst, um es reparieren zu lassen, sagst du dem Mechaniker nur, dass es nicht funktioniert hat, dann dreh dich um und geh weg und erwarte, dass er das Problem daraus löst und es repariert? Wenn Sie bei der Lösung eines Problems Hilfe benötigen, sollten Sie alle Informationen zur Verfügung stellen, mit denen Sie das Problem leichter diagnostizieren können als die Informationen, die Sie am wenigsten bereitstellen können. –

+0

Absenden Ed. "Hat nicht funktioniert" ist kein Fehlerbericht. Dein Beispiel dort funktioniert perfekt für mich. – Taywee

Antwort

1

Mit grep:

grep -v '^[ ,]*$' file 
4

Verwenden Sie einfach grep:

grep '[^ ,]' file 

Mit sein, dass würde sed:

sed -n '/[^ ,]/p' file 

Beachten Sie, dass das wird auch Leerzeilen entfernen, lassen Wir wissen, ob das ein Problem ist.

+0

Hallo, die sed-Option funktionierte für mich, aber was bedeutet "/ p" am Ende der Regex? tkx –

+0

'man sed' oder einfach google sed. 'p' sollte leicht zu finden sein (Hinweis - das' -n' ist auch relevant). –

+1

danke "/ p": Schreiben Sie den Musterbereich auf die Standardausgabe, wenn ein Ersatz vorgenommen wurde. Wenn die Ersetzungszeichenfolge identisch mit der Ersetzung ist, wird sie immer noch als Ersetzung betrachtet. –

-1

Dies funktioniert für mich sed -i '/^ [ ,]*$/d' file.

+1

Das wird bei Zeilen fehlschlagen, die nicht mit einem leeren Zeichen beginnen. –

+0

Natürlich, aber seine Beispieldatei sieht wie '[a-z], *' aus. Zumindest gibt es nur ',' oder '[a-z], *'. Und ich verstand ihn, dass "[a-z]" vermisst werden konnte und durch Leerzeichen ersetzt wurde. Ich kopierte sein Beispiel und es funktionierte mit meinem sed Befehl. –

+0

Sorry, nichts hat funktioniert :( – Marshall

1

dieses

awk ' { if ($1 !~ /^[ ,]/) { print } ; } ' test.txt 
0
sed -e '/[[:space:],]/d' file.txt 

Verwenden versuchen Option -i diese Änderungen bestehen bleiben:

sed -i '/[[:space:],]/d' file.txt 
Verwandte Themen