2016-04-03 10 views
0

Ich versuche, eine Zeichenfolge aus einer Datei zu löschen, die sed-Befehl folgen mit:eine Groß- und Kleinschreibung Zeichenfolge in der Datei angepasst Löschen

pattern="$name;$date;$hour" 
sed -i.bak "/${pattern}/I d" $BOOKFILE 

Aber das Problem ist, dass: Unter OS X - sed nicht Unterstützung case-insensitive passend

Ich muss eine Zeichenkette von einer Datei löschen, die unempfindlichen Fall verwendet. Zum Beispiel, wenn ich "a; 20161010; 11" anstelle von "A; 20161010; 11" einfüge, muss es die gleiche Zeichenfolge aus der Datei erkennen und löschen.

Ich kann nicht Skript in anderen Sprachen wie Perl oder TCL etc ...

+2

Mögliches Duplikat von [Groß- und Kleinschreibung nicht beachten] (http://stackoverflow.com/questions/4412945/case-insensitive-search-replace-with-sed) –

+0

Nein, es ist nicht doppelt, weil ich kann verwende kein Skript in anderen Sprachen wie Perl oder TCL etc ... weil es eine Übung für die Universität ist. – sgira

+1

Ich fürchte, die 'sed' Binärdatei wird sich nicht ändern, um deine Wünsche zu erfüllen. Sie werden wahrscheinlich * etwas * sonst verwenden müssen, oder eine 'sed' Binärdatei erhalten, die dies unterstützt. –

Antwort

0

I Gelöst verwenden!

# Delete the line containing the pattern '$name;$date;$hour' and create/update a file.bak 
pattern=$(grep -i "$name;$date;$hour" $BOOKFILE) 
sed -i.bak "/${pattern}/ d" $BOOKFILE 

I verwendet grep -i Befehl (-i = unempfindlicher Fall), um das Muster zu bekommen, dann habe ich mit dem richtigen Muster sed.

Verwandte Themen