两个sed小技巧

在写shell时使用sed处理一些输出,遇到两个问题,在网上找到了相应的解决办法,在此处备份一下。

[ sed处理空字符 ]

空字符,它的ASCII码值为0。在sed中如何标识空字符呢?看下面的例子:

find . -print0 | sed -e 's/\x0/\n/g'

在上面的例子中,find命令把当前目录下的文件名输出出来,以空字符分隔。输出被管道送给Sed进行处理。在sed中,则把空字符替换成回车符。

之所以用空字符做分隔符来分隔find命令的输出,是为了正确处理带空格的文件名。在上例中并没有体现出这点,我会在其它文章中说明。

[ sed使用shell中的变量 ]

在脚本中,有时希望在sed命令中使用shell定义的变量。在此时,就要用双引号而不是单引号来引用sed命令,因为对shell来说,它会处理双引号中的变量引用,而对单引号中的内容,shell完全不会动。例如:

  TERM1=term; TERM2=rxvt; echo "term" | sed -e "s/$TERM1/$TERM2/g"

注意上例中的引号用法。如果改成单引号,输出结果会不同。

“两个sed小技巧”的一个回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注