一部の文字を 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」