Issue
Team, i have a file that looks for non zero and replaces with FALSE and 0 with TRUE. am doing it like this
sample input text
branch="false" hits="0" lineNumber="36"
branch="false" hits="1" lineNumber="36"
branch="false" hits="2" lineNumber="36"
branch="false" hits="211" lineNumber="36"
branch="false" hits="411" lineNumber="36"
sed -i '/<line/s/hits="0"/hits="false"/g' $coverage_file
sed -i '/<line/s/hits="1"/hits="true"/g' $coverage_file
sed -i '/<line/s/hits="2"/hits="true"/g' $coverage_file
sed -i '/<line/s/hits="3"/hits="true"/g' $coverage_file
can i combine all these in less operations?
expected outout
branch="false" hists="false" lineNumber="36"
branch="false" hits="true" lineNumber="36"
branch="false" hits="true" lineNumber="36"
branch="false" hits="true" lineNumber="36"
branch="false" hits="true" lineNumber="36"
Solution
You could shorten along these lines:
sed -E -i '
/<line/ {
s/(hits=")0"/\1false"/g
s/(hits=")[^"]*[1-9][^"]*"/\1true"/g
}
' "$coverage_file"
This calls sed just once, combines the conditions for "true", and uses capture groups.
Answered By - Benjamin W. Answer Checked By - Cary Denson (WPSolving Admin)