linux文本替换也不是不行 | sed,awk,tr各种花样

SHELL语法

要替换 shell 中的字符串内容,通常将 sed、awk 或 grep 等命令与其他实用程序结合使用。以下是有关如何执行此操作的简要说明

转换

字符转数组

  • 在 shell 中默认将空格当作是换行符并通过一对括号进行数组转换。所以将字符串转数组的最简单方式就是通过 () 进行转化
shell 复制代码
nstr='a b c d'
narr=(${nstr})
echo ${narr[1]}
  • 只需要最简单的 () 进行包裹,最后我们就可以访问数组元素了。下面介绍的几种方式大多都是通过改变分隔符或者将按一定规则转换成默认分隔符来转换成数组。

替换方式

  • 我们可以直接通过 () 进行转换。 (${str//,/}) 表示按 , 号分割形成数组
  • tr命令非常通用,可用于各种字符操作任务。如果您有具体问题或需要有关特定用法的更多信息,请随时提问!
  • 上面好像并没有将 arr 转成数组 。 仔细查看发现自己丢了一个空格 (${str//F/ }) 这样arr就是数组了。

tr

  • tr 的命令本质上就是替换命令。我们知道tr 是针对单字符进行查找,更新,删除操作的,而我们也知道最原始的转化数组的方式就是() 通过空格进行切割,那么我们针对特有的分隔符进行替换就行了。但是有个局限性就是只能单字符的分隔符。
  • 如上,作为分隔符很容易就可以通过tr进行替换掉了,但是如果我们将a,作为分隔符,那么tr显得无能为力了。
  • 虽然也转换成数组了,很明显我们的第一个元素a丢失了。
  • 请记住,sed 可能是一个强大的工具,因此请谨慎使用它,尤其是在就地修改文件时,因为没有简单的方法来撤消更改。在使用 sed 进行文本操作之前,请始终备份文件。

sed

  • 学习tr的时候我们就说过,tr就是sed的极速版本。tr能实现的sed都可以。
shell 复制代码
echo 'aa,ba,ca,d' | sed -n 's/a,/ /gp'
  • 通过sed 我们就可以按照任意的字符切割了,而不像 tr 那样仅能按照单字符切割。
  • sed处理过的输出是直接输出到屏幕上的,使用参数"i"直接在文件中替换。

awk

  • Awk是Unix和Linux环境中常用的通用文本处理工具。它通常用于文本操作、数据提取和报告等任务。以下是有关 Linux 中的 Awk 的一些基本信息
  • awk 的功能是按格式读取内容并输出,这个特性刚好也符合我们将字符转数组的需求
shell 复制代码
echo 'aa,ba,ca,d' | awk 'BEGIN{FS="a,"} {for(i=1;i<=NF;i++)printf("%s ",$i);print ""}'

修改转换分隔符

  • 上面三种都是将字符中的分隔替换成空格,然后配合 () 进行数组转换的,下面我将介绍两种直接将转换数组的分隔符修改掉,这样无需中间的转换。换句话说上面是将字符进行适当的修改。而后面方法是直接将制度修改。
shell 复制代码
IFS="Fa" read -a mynewarr <<< $str
  • 经过测试这种方式好像和tr 的效果是一样的,只能针对单字符,上述的数组只有1个元素切元素为b c d 。 我也不知道为啥,如果IFS =, 这是没有问题的。
相关推荐
学长毕设5 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
钱工的门窗技术笔记5 小时前
室内极窄全景移门的支承路径与预留接口:轨道形式、型材壁厚口径与验收边界
物联网·架构·数据分析
码农小旋风6 小时前
Ray分布式计算引擎介绍
人工智能·架构
滴滴答答哒6 小时前
ASP.NET Core + FaceRecognitionDotNet 人脸识别实战:DI 单例、特征向量持久化与 1:N 比对
后端·asp.net
ZhengEnCi6 小时前
Agent 架构怎么选:从单 Agent 到多 Agent 编排的选型决策指南
算法·架构
qetfw6 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
星融元asterfusion6 小时前
工业网络升级实战:100G 双轨 Leaf-Spine 架构破解高并发出货网络瓶颈
网络·架构·spine
天远数科7 小时前
零信任架构实战:基于天远企业法人四要素高级版构建自动化供应商资质穿透核验网关
人工智能·架构·自动化
逆风的蚂蚁8 小时前
linux服务器性能调整怎么落地?我把 CPU 调度、I/O 优先级和内核参数这几个旋钮都拧了一遍
linux·运维·服务器
深蓝AI8 小时前
苹果智能入华拆解:八样首批功能、支持的机型、千问在三个入口的位置
人工智能·架构