首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用shell脚本替换文件中的特殊字符

如何使用shell脚本替换文件中的特殊字符
EN

Stack Overflow用户
提问于 2013-11-07 17:40:22
回答 5查看 3.4K关注 0票数 0

我有固定长度的文件,像这样

代码语言:javascript
复制
1234INen %^&           198787655
1234dnen %^& ($#       1987989809 

我只想用*替换这个特殊字符

我使用了cut命令,但它正在修剪字段之间的空格。

代码语言:javascript
复制
cut -c 5-10

如何在不改变输入格式和长度情况下替换特殊字符。

有人建议使用sed命令来代替

EN

回答 5

Stack Overflow用户

发布于 2013-11-07 18:21:35

您可以尝试使用这个sed命令:

代码语言:javascript
复制
sed 's/[^a-zA-Z0-9 ]/*/g' file
1234INen ***           198787655
1234dnen *** ***       1987989809

更新: As per op's comments:from length 9-16 i just want to replace with *

使用这个sed:

代码语言:javascript
复制
sed -r 's/^(.{9}).{8}/\1********/g' file
1234INen ********      198787655
1234dnen ********      1987989809
票数 1
EN

Stack Overflow用户

发布于 2013-11-07 17:48:30

只要去掉所有你想要包含的输出,这样就省去了你不想要的东西。例如,要省略"columns“5-10中的字符,请使用cut -c1-4,11-,然后根据您的喜好使用awk格式化输出,例如cut -c1-4,11- < your_file.txt | awk '{ f=$1 ; $1="" ; printf "%s %s\n", f, $0 }' (这将打印出第一个"column”,然后打印出几个空格,然后是“columns”的其余部分)。

票数 0
EN

Stack Overflow用户

发布于 2013-11-07 18:38:41

要删除不可打印的字符,您可以尝试这样做,前提是您具有支持POSIX字符类的sed (例如,现代Linux):

代码语言:javascript
复制
sed -r 's/[^[:print:]]//' input.file > final.file
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19832477

复制
相关文章

相似问题

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