0

我想用 sed 替换一些字符,但前提是满足某些条件。

因此,如果字符串中的某处出现\t,则应将其替换为\, 即。带有反斜杠和物理制表符。万一\\t发生了,什么都不应该做。

一个逻辑是替换\t前面没有的每个,\但我不确定如何编写该正则表达式。也不是很擅长那些东西sed

4

2 回答 2

1

尝试:

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
于 2013-03-19T14:39:10.920 回答
0

单程:

sed 's/[^\\]\\t/\\      /' file

在替换部分,它是'2个反斜杠+Ctrl-V+Tab'

于 2013-03-19T14:30:48.340 回答