sed "s/\(.*\)/\t\1/" $filename > $sedTmpFile && mv $sedTmpFile $filename
我期望这个sed
脚本在$filename
中的每一行前面插入一个tab
,但它不是。出于某种原因,它正在插入一个t
。
发布于 2010-04-12 22:59:47
使用Bash,您可以通过编程方式插入TAB字符,如下所示:
TAB=$'\t'
echo 'line' | sed "s/.*/${TAB}&/g"
echo 'line' | sed 's/.*/'"${TAB}"'&/g' # use of Bash string concatenation
发布于 2016-01-26 02:39:10
使用$(echo '\t')
。您需要在模式周围加上引号。
例如:要删除选项卡:
sed "s/$(echo '\t')//"
发布于 2010-04-10 07:54:23
您不需要使用sed
进行替换,而实际上,您只需要在行前插入一个制表符。与仅打印出来相比,替换这种情况的操作代价很高,尤其是在处理大文件时。它也更容易阅读,因为它不是正则表达式。
例如使用awk
awk '{print "\t"$0}' $filename > temp && mv temp $filename
https://stackoverflow.com/questions/2610115
复制相似问题