【发布时间】:2016-04-08 15:05:05
【问题描述】:
我正在尝试运行脚本来修改.bashrc 以在命令提示符前插入时间。但我一直以文字 TAB 结束。
我试过了
sed -i "s/PS1='\${deb/PS1=\'\\t \${deb/" {filename}
sed -i "s/PS1='\${deb/PS1='\\t \${deb/" {filename}
sed -i "s/PS1='\${deb/PS1='\t \${deb/" {filename}
sed -i 's/PS1=\'\${deb/PS1=\'\\t \${deb/' {filename}
sed -i $'s/PS1=\'\${deb/PS1=\'\\t \${deb/' {filename}
以及上述的许多变体。我通常不会在实际标签中插入任何内容。
我发现如果我这样做:
sed $'s/PS1=\'\${deb/PS1=\'\\t \${deb/' {filename} | grep PS1=
然后我得到的输出似乎是我所追求的,但不是在文件中。
如何将实际的 \t而不是 TAB 插入到我要编辑的文件中?
如果不是很明显,上面的最后一个示例和命令行上的测试使用相同的正则表达式。或者至少,我认为他们会这样做。
我试图更改.bashrc 中的两行。这些行与命令提示符有关,并在此处完整复制:
~⟫ grep PS1 .bashrc
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
我希望将其转换为:
PS1='\t ${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='\t ${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
我认为这很明显,但是我不想在该行中插入 TAB。我想按字面意思插入\t,即“反斜杠和t”在一起,而不是将它们翻译成TAB。
【问题讨论】:
-
听起来 OP 正在尝试 not 插入标签!
-
sed -e 's/pattern/\\t/g' /tmp/file >/tmp/newfile对我来说就像一个魅力 -
我尝试了单引号和双引号中的三重反斜杠。我认为我没有尝试过
-e开关。愚蠢的部分是最后一个标准输出,只是不符合要求。 -
感谢@Aaron 的想法,尽管它们可能是不正确的 :) 汤姆(和我的问题)总结了一下,我不想要标签。请至少完整阅读标题(我没有更改它)或至少略读问题;)