shell题解 | 格式化输出(正则)

格式化输出

https://www.nowcoder.com/practice/d91a06bfaff443928065e611b14a0e95

#!/bin/bash

sed '
    :a;
    s/\B[0-9]\{3\}\>/,&/;
    ta
' nowcoder.txt

# :a           定义一个标签 a,用于循环
# ta           如果替换成功,则跳转到标签a,继续下一次替换
# [0-9]\{3\}   匹配三个连续的数字   \ 是用来转义{ 和 }


#  :a 和 ta 构成了循环
# 例如nowcoder.txt的内容是 123456789
#  \B 把前3个数字作为边界
#  \> 把后3个数字作为边界
# 第一次替换: 匹配 \B[0-9]\{3\}\>,找到 456  将其前面加上逗号,结果变为 123,456789 
# 第二次替换: 匹配 \B[0-9]\{3\}\>,找到 789  将其前面加上逗号,结果变为 123,456,789
# 第三次替换: 最后的3个数字已经是边界,因此替换操作没有效果

# 例如nowcoder.txt的内容是 123456789
# 第一次替换: 按最后3个数字替换,因为 ,&


# echo "123456789" | sed 's/[0-9]\{3\}/&,/'   
# 123,456789

# echo "123456789" | sed 's/[0-9]\{3\}/,&/'   
# ,123456789


# echo "123abc456" | sed 's/\B[0-9]/X/g'    将连续数字中非首位的数字替换为 "X"
# 1XXabc4XX

# echo "cats dogs birds" | sed -n 's/s\>/Y/gp'
# catY dogY birdY

# echo "file1 file2 file file123" | sed -n 's/[0-9]\>/Y/gp'
# fileY fileY file fileYYY

END

全部评论

相关推荐

05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-04 18:02
好不容易拿到了字节Offer,鼠鼠做后端的,但家里人觉得可能被裁员不稳定,让鼠鼠去投国企,现在好纠结到底该咋选
文档传偷助手:该投就投吧,不过建议别放弃offer 拿到手里的才是最好的
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务