For example I want to change
"'this text'" "that text" 'other_text' into
'this text' "that text" 'other_text' I tried
sed -e 's/^"\'/"/g' but my quoting must be off.
Ubuntu.
For example I want to change
"'this text'" "that text" 'other_text' into
'this text' "that text" 'other_text' I tried
sed -e 's/^"\'/"/g' but my quoting must be off.
Ubuntu.
With GNU sed:
sed 's|\x22\x27|\x27|;s|\x27\x22|\x27|' file Output:
'this text' "that text" 'other_text'
${single_quote} ${double_quote}, this is readable but more characters. You can not use escape \ in a '' quote. Therefore put everything in a "" quote and escape the "s. e.g. "s/^\"'/'/g"
Alternatively end the '' quote, do a \', then start the '' quote again e.g. 's/^"'\''/'\''/g'
Also if you are easily confused by the \s and /s, then note you do not have to use /s as delimiters. You can use any character, e.g. "s%^\"'%'%g"
This only does the first quote at the beginning of line, the bit you seem to be struggling on.
Try this line
sed -e "s/^\"'/\'/g" -e "s/'\"$/\'/g" file Instead of enclosing the sed expression between ' ', do it between " " so you can escape with \ the " "
e.g.
@tachomi:~$ echo "\"'this text'\"" "'this text'" @tachomi:~$ echo "\"'this text'\"" | sed -e "s/^\"'/\'/g" -e "s/'\"$/\'/g" 'this text' e.g.2
@tachomi:~$ cat file.txt "'this text'" "that text" 'other_text' @tachomi:~$ sed -e "s/^\"'/\'/g" -e "s/'\"$/\'/g" file.txt 'this text' "that text" 'other_text' -e in one sed e.g. sed -e "s/^\"'/\'/g" -e "s/'\"$/\'/g" file