Ich habe eine Textdatei.Wie kann ich mit sed Zeilen mit eckigen Klammern löschen?
cat 3.txt
qqq abc cdef (1234) [5689a]
abcfde [aaaa]
ffff [321]
diese Datei mit Klammern Inhalt.
IFS=$'\n'
VAR=($(</tmp/3.txt))
LEN=${#VAR[@]}
for ((i = 0; i <LEN; i++));do
echo ${VAR[$i]}
sed -i -e "\#${VAR[$i]}#d" /tmp/3.txt
done
Ich möchte
qqq abc cdef (1234) [5689a]
dann diese Zeile Echo löschen. und Echo zweite Zeile. dann lösche die zweite Zeile. und echo dritte Zeile. dann lösche die dritte Zeile. aber diese Zeile mit [] .Wie kann ich sed verwenden, um diese Zeile zu löschen?
Wenn Sie uns sagen können, warum Sie das tun wollen, wird es uns helfen, eine Antwort zu finden, um das zu tun, was Sie brauchen, um den richtigen Weg zu finden. Insbesondere - warum möchten Sie jeweils eine Zeile drucken, dann löschen, statt alle übereinstimmenden Zeilen zusammen zu drucken und dann alle zusammen zu löschen? Stellen Sie sich auch ein Beispiel vor, das Ihr Problem besser veranschaulicht, weil 'cat 3.txt; > 3.txt' erzeugt Ihre gewünschte Ausgabe. Ich vermute, diese Frage ist ein Beispiel für [Das XY-Problem] (http://xyproblem.info/). –
Wenn du kannst, benutze 'reararray -t VAR tmp/3.txt', anstatt mit' IFS' herumzubasteln. – chepner
'readarray -t VAR tmp/3.txt' zeigt so ' qqq' 'abc'' cdef' '(1234)' '[5689a]' 'abcfde'' [aaaa] '' ffff' ' [321] ' –