
Tag line editing. Exclude lines that have existing "tag:".
#!/bin/sh
# Purpose:
#     Exclude lines that have existing "tag:"
#     Find lines that contains target string "voc"
#     Insert new tags "tag::" to the matched lines
#     Use non-extended regex to improve compatibility
# Methods:
#     Use the backslash syntax \1 \2 \1d \2d ..
#     Basicallt \1d is the same as \1
#     \1 \2 are defined by small brackets \( \)
#     Up to nine capture groups can be used. \9.
#     https://stackoverflow.com/questions/4609949/what-does-1-in-sed-do
str="
voc
bbb voc
voc bbb
ccc
tag: voc
"
fpath="./f1.txt"
printf "$str" > $fpath
cat $fpath
echo
sed -e '/^tag/! s/^\(.*voc[[:space:]]\|.*voc$\)/tag:: \1/' -i $fpath
cat $fpath
rm $fpath