Bash-skrip to delete whole xlf-tag


i try to delete an whole tag in an xlf-file like:

        <trans-unit id="test" resname="test">

Is there a way delete from string <trans-unit id="test" till string </trans-unit>?
I managed to delete two additional lines but it will be a problem on a multiline-value.

This is my current version:

sed -i.bak "/id=\"$KEY\"/,+2d" "$FILEPATH"

>Solution :

Since the file is well-indented, you can use a range pattern with sed:

sed -i.bak '/<trans-unit id="'"$KEY"'"/,/<\/trans-unit>/d' "$FILEPATH"

The command will find all lines between a line that contains <trans-unit id= + the ID in the KEY variable, and then " char, and a line that contains </trans-unit>, and then will delete the found line range(s) (due to the d flag).

Leave a Reply Cancel reply