首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么sed不能将\t识别为制表符?

为什么sed不能将\t识别为制表符?
EN

Stack Overflow用户
提问于 2010-04-10 03:01:26
回答 8查看 119.3K关注 0票数 121
代码语言:javascript
运行
复制
sed "s/\(.*\)/\t\1/" $filename > $sedTmpFile && mv $sedTmpFile $filename

我期望这个sed脚本在$filename中的每一行前面插入一个tab,但它不是。出于某种原因,它正在插入一个t

EN

回答 8

Stack Overflow用户

发布于 2010-04-12 22:59:47

使用Bash,您可以通过编程方式插入TAB字符,如下所示:

代码语言:javascript
运行
复制
TAB=$'\t' 
echo 'line' | sed "s/.*/${TAB}&/g" 
echo 'line' | sed 's/.*/'"${TAB}"'&/g'   # use of Bash string concatenation
票数 45
EN

Stack Overflow用户

发布于 2016-01-26 02:39:10

使用$(echo '\t')。您需要在模式周围加上引号。

例如:要删除选项卡:

代码语言:javascript
运行
复制
sed "s/$(echo '\t')//"
票数 4
EN

Stack Overflow用户

发布于 2010-04-10 07:54:23

您不需要使用sed进行替换,而实际上,您只需要在行前插入一个制表符。与仅打印出来相比,替换这种情况的操作代价很高,尤其是在处理大文件时。它也更容易阅读,因为它不是正则表达式。

例如使用awk

代码语言:javascript
运行
复制
awk '{print "\t"$0}' $filename > temp && mv temp $filename
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2610115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档