Home > Software design >  Bash-skrip to delete whole xlf-tag
Bash-skrip to delete whole xlf-tag

Time:04-06

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

        <trans-unit id="test" resname="test">
            <source>Panels</source>
        </trans-unit>

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"

CodePudding user response:

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).

  • Related