linux下常见的字符串处理

linux下有许多对字符串文本的处理工具,diff,grep,awk,sed等等。。

比较两个文件的不同

[root@bogon diff]# diff file1 file2

以高亮的形式在vim编辑器中显示两个文件的不同之处

vimdiff

用于匹配字符,或者查找文件中的匹配项

[root@bogon diff]# ls | grep file
file1
file2

重要参数

-i  #忽略大小写
-n  #显示结果所在行的行号
-c  #显示结果个数
-v  #反向过滤
-r + 目录名       ###在目录下查找含有关键字的内容
-E "关键字1|关键字2"    ###过滤多个关键字

用于排序

-n  #纯数字
-r  #倒序显示
-u  #去掉重复行
-t  #指定分隔符
-k  #指定排序的列

用法实例
sort -t: -k3 -n /etc/passwd
将文本以:为分隔符,以第三列作为(uid)排序标准,-n表示排序是以纯数字来排,而不是以字母的顺序。

重复行处理,uniq只会认为连续的重复的行才是重复行。
若想删除掉所有的重复的行,可以先排序然后uniq

-c #统计重复行的个数
-d #显示重复行
-u #显示唯一行

转换字符大小写
tr 'a-z' A-Z < &#x6587;&#x4EF6;&#x540D; ##将所有的大写转换成大写
tr -d &#x5173;&#x952E;&#x5B57; &#x6587;&#x4EF6;&#x540D; ##将所有关键字删除

sed 's/nologin/login/g' file    #将file文件中的所有nologin替换成login
sed '1,5s/nologin/login/g' file #将1-5行的所有nologin换成login
sed '/games/,/nobody/s/nologin/login/g' file #将games到nobody之间的nologin换成login
sed -e 's/nologin/login/g' -e 's/sbin/bin/g' #多条替换规则一起用
sed 3d file    #不显示第三行
sed 3,7d file   #不显示3-7行
sed 3,7p file   #重复显示3-7行
sed -n 3,7p file  #只显示3-7行
touch rule        #建立规则文件
sed -f rule file  #使用规则文件更改输出

以上的操作均不会对原来的文本进行修改,若要修改,需要在前面加上 -i参数

awk是一个超强的文本处理工具,甚至可以当做一个脚本语言来使用。这里只介绍一种常用的使用方式,那就是进行字符的分割。
以截取自己的局域网ip为例

[root@linux hexo]# ifconfig wlp1s0
wlp1s0: flags=4163<up,broadcast,running,multicast>  mtu 1500
        inet 192.168.1.103  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::c6d9:87ff:fe5a:68f1  prefixlen 64  scopeid 0x20<link>
        ether c4:d9:87:5a:68:f1  txqueuelen 1000  (Ethernet)
        RX packets 313404  bytes 392626230 (374.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 213498  bytes 26747428 (25.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@linux hexo]# ifconfig wlp1s0|grep -w "inet"
        inet 192.168.1.103  netmask 255.255.255.0  broadcast 192.168.1.255

[root@linux hexo]# ifconfig wlp1s0|grep -w "inet"|awk -F" " '{print $2}'
192.168.1.103
</up,broadcast,running,multicast>

awk 的主要用法 -F参数后面接分隔的字符” ”
后面接'{ }’ $1 $2..分别代表分隔出来的每一列, print $1 就是输出这一列

这只是awk的一种用法而已,awk算得上一个脚本语言,有自己独立的语法,就不一一概述

Original: https://www.cnblogs.com/0x12345678/p/5622007.html
Author: Hackergin
Title: linux下常见的字符串处理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/643277/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 为BlueLake主题增加自定义icon图标

    一、前言 hexo 的 Bluelake 主题是我一直在用的,简单大方,很喜欢。但最近有了添加自定义 icon 图标的需求,比如,添加 “地址”、&#822…

    技术杂谈 2023年7月25日
    077
  • SpringBoot的多种事件监听机制

    前置配置 ApplicationContextInitializer接口 代码示例 1.由于触发阶段在于准备容器的时候,所以添加@Component注解是不会起作用的,应为@Com…

    技术杂谈 2023年7月24日
    064
  • CSS样式

    css概述 层叠样式表(cascading style sheet) 层叠是指==将多个样式施加在一个元素(标签)上== 作用: 美化页面 将html代码与样式代码分离 好处: 功…

    技术杂谈 2023年6月21日
    091
  • 后端编写Swagger接口管理文档

    在后端开发当中,编写好多个接口后需要通过注解编写相应的接口文档提供给前端调用接口实现前后端分离。 Swagger接口管理文档 访问接口文档的网页:http://localhost:…

    技术杂谈 2023年7月11日
    062
  • numpy常用用法总结

    numpy 简介 各种用法介绍 首先是numpy中的数据类型,ndarray类型,和标准库中的array.array并不一样。 ndarray.ndimthe number of …

    技术杂谈 2023年6月21日
    0105
  • LightDB 22.2正式发布

    本版本主要特性包括: 1、引入实验性特性oracle pl/sql存储过程兼容,兼容绝大部分oracle pl/sql一份代码可以同时运行于oracle和lightdb 2、lig…

    技术杂谈 2023年6月1日
    096
  • JSON.parse()和JSON.stringify()

    parse用于从一个字符串中解析出json对象,如 var str = ‘{“name”:”huangxiaojian”…

    技术杂谈 2023年5月30日
    073
  • typedef

    为类型定义别名 typedef int Int 这样 Int 就是 int类型的别名,就可以使用 Int来定一整形变量. 只需要在类型变量生命的基础上,再加一个关键字 typede…

    技术杂谈 2023年7月11日
    069
  • 区块链代币(Token)笔记 — — 术语

    接触区块链和数字货币差不多有大半年时间,一直在赶项目进度,现在有空整理补习一下相关的知识,只谈代币不谈区块链😂。 声明欢迎转载,但请保留文章原始出处:)博客园:http://www…

    技术杂谈 2023年5月31日
    096
  • 最简单的样式实例

    <ui> <view> <container> <subViews> <label value="测&…

    技术杂谈 2023年6月1日
    089
  • 多标签多分类相关

    一、单标签多分类 单标签二分类这种问题是我们最常见的算法问题,主要是指label 标签的取值只有两种,并且算法中只有一个需要预测的label标签; 直白来讲就是每个实例的可能类别只…

    技术杂谈 2023年7月25日
    098
  • 实现邮箱发送验证码功能

    实现注册和忘记密码界面的邮箱发送验证码功能 邮箱验证步骤 本文使用了redis数据库做验证码的缓存,不想用redis数据库也可以直接将验证码放入mysql中,设置验证码有效期即可。…

    技术杂谈 2023年7月11日
    072
  • 再谈线程池——深入剖析线程池的前世今生

    再谈线程池——深入剖析线程池的前世今生 由线程到线程池 线程在做什么? 灵魂拷问:写了那么多代码,你能够用一句话简练描述线程在干啥吗? public class Demo01 { …

    技术杂谈 2023年7月23日
    063
  • 使用 Playwright 进行 E2E 测试

    1 Playwright 简介 Playwright 是由微软开源的一个Web测试和自动化的框架,它具有以下特性: 跨平台 跨浏览器 跨语言(TypeScript、JS、Pytho…

    技术杂谈 2023年5月31日
    0111
  • Ubuntu下Mariadb数据库的安装和目录迁移

    1、简介 本文主要是 Ubuntu 下 Mariadb 数据库的安装和目录迁移,同样适用于 Debian系统:Ubuntu 20.0.4Mariadb:10.3.22注意:文中运行…

    技术杂谈 2023年7月24日
    077
  • 国产化之 .NET Core 操作达梦数据库DM8的两种方式

    背景 某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟,数据库使用达梦V8,CPU平台的范围包括x64、龙芯、飞腾、鲲鹏等。考虑到这些基础产品对.NET的支持,最终选择…

    技术杂谈 2023年7月11日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球