我想用 sed 替换一些字符,但前提是满足某些条件。
因此,如果字符串中的某处出现\t
,则应将其替换为\
, 即。带有反斜杠和物理制表符。万一\\t
发生了,什么都不应该做。
一个逻辑是替换\t
前面没有的每个,\
但我不确定如何编写该正则表达式。也不是很擅长那些东西sed
。
尝试:
sed -r 's/^\\t|([^\\])\\t/\1\t/g' file
例子:
$ cat file
hello\tworld
foo\\tbar
\tfirst
last\t
last\\t
\\tfirst
$ sed -r 's/^\\t|([^\\])\\t/\1\t/g' file
hello world
foo\\tbar
first
last
last\\t
\\tfirst
单程:
sed 's/[^\\]\\t/\\ /' file
在替换部分,它是'2个反斜杠+Ctrl-V+Tab'