split,paste,eval命令及正则表达式

news2024/11/23 6:26:14

一、split命令

将 linux 下的一个大文件拆分成若干小文件

1.语法格式

格式:
    split 选项 参数 原始文件 拆分后文件名前缀
常用选项:
-l:以行数拆分
-b:以大小拆分

2.命令演示

2.1选项 -l :以行数分隔

cat -n anaconda-ks.cfg     
    69	pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    70	pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
    71	pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    72	%end
split -l 35 anaconda-ks.cfg anac
ls
123.txt  aa.sh  abc.txt  anacaa  anacab  anacac  anaconda-ks.cfg
cat -n anacaa  
    32	clearpart --none --initlabel
    33	# Disk partitioning information
    34	part /boot --fstype="xfs" --ondisk=sda --size=500
    35	part pv.252 --fstype="lvmpv" --ondisk=sda --size=60939

2.2选项 -b :以大小分隔 

split -b 1K anaconda-ks.cfg
ll -h
-rw-r--r--. 1 root root 1.0K 5月  11 15:27 xaa
-rw-r--r--. 1 root root  981 5月  11 15:27 xab
-rw-------. 1 root root 2.0K 3月  22 20:55 anaconda-ks.cfg

 二、paste命令

以列的形式合并文件

1.语言格式

格式:
    paste 文件1 文件2
常用选项:
-d:指定合并后的分隔符
-s:把列的内容转换成行输出

2.命令演示

echo -e "a\nb\nc" > a
cat a
a
b
c
echo -e "1\n2\n3" > b
cat b
1
2
3
paste a b
a	1
b	2
c	3

 2.1选项 -d :指定合并分隔符

paste a b -d ":"
a:1
b:2
c:3
paste a b -d ","
a,1
b,2
c,3

 2.2选项 -s :将列内容转换成行输出

paste a b -s
a	b	c
1	2	3
paste a b -s -d ":"
a:b:c
1:2:3

三、eval命令

命令字前加上eval时,shell会在执行命令之前扫描它两次。eval命令将首先会扫描命令行进行所有的置换,然后再执行该命令。

适合于一次扫描无法实现其功能的变量。

1.命令演示

#将hello world重定向文件a中
echo "hello world" > a
#定义变量=cat a
arr="cat a" 
#输出变量为cat a
echo $arr
cat a
#用eval命令会先扫描$arr,查找出arr=cat a;然后执行cat a命令
eval $arr
hello world

四、正则表达式 

通常用于判断语句中,用来检查某一字符串是否满足某一格式。

正则表达式是由普通字符与元字符组成

  • 普通字符包括大小写字母、数字、标点符号及一些其他字符
  • 元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符或表达式)在目标对象中的出现模式

1. 基础正则表达式

基础正则表达式常见元字符(支持工具:grep ;egrep ;sed ;awk)
\:转义字符,用于取消特殊符号的含义,例:\! ; \n ; \$
^:匹配字符串开始的位置
$:匹配字符串结束的位置,例 ^$ :表示空行
.:匹配除\n之外的任意的一个字符
*:匹配前面子表达式 0 次或者 多 次

[list]:匹配list列表中的一个字符
[^list]:匹配任意非list列表中的一个字符

\{n\}:匹配前面的子表达式 n 次
\{n,\}:匹配前面的子表达式不少于 n 次
\{n,m\}:匹配前面的子表达式 n 到 m 次
注:egrep 、 awk 使用 {n}; {n,}; {n,m}匹配时,“{}”前不用加“ \ ”

\w:匹配包括下划线的任何单词字符。
\W:匹配任何非单词字符。等价于“[^A-Za-z0-9_]。
\d:匹配一个数字字符。
\D:匹配一个非数字字符。等价于“[^0-9]”。
\s:空白符
\S:非空白符

2.扩展正则表达式

扩展正则表达式元字符:(支持工具:egrep,awk) grep -E;sed -r
+:匹配前面子表达式1次以上
?:匹配前面子表达式0次或者1次
():将括号中的字符串作为一个整体
|:以或的方式匹配字符串,例:g(oo|la)d,匹配结果为good或glad

3.实验

3.1筛选指定的电子邮箱:用户名@子域名.[二级域名].顶级域

要求:

用户名@:长度要求在6-18位,任意大小写英文,任意数字,除了@符号和空格以外的其它任意符号字符,开头只能是 _ 或字母

子域名.[二级域名]:长度任意,符号只能包含 - _ .

. 顶级域名:长度在2-5,任意大小写英文

#在以下电子邮箱中筛选出指定电子邮箱
cat a.txt
zhangsan123@qq.com
li_si@163.com
wang@wu@sina.com
zhao liu@126.com
qianqi@sina.com.cn
12qianqi@sina.com.cn
qianqi@sina.com.crpeof

用户名@:(^[a-zA-Z_][^@ ]{5,17})@
#匹配以a-zA-Z0-9_为开头的一个字符,
#总长为6-18个字符,后面反向匹配除了 '@'和' '的任意字符5-17次

子域名:[a-zA-Z0-9_-\.]+(\.[a-zA-Z0-9_-\.]+)?
# + 匹配1次以上
#?匹配0次到1次,二级域名可以有,也可以没有。

顶级域名:\.(a-zA-Z]{2,5})$
#匹配2-5次的任意大小写英文

cat a.txt
zhangsan123@qq.com
li_si@163.com
wang@wu@sina.com
zhao liu@126.com
qianqi@sina.com.cn
12qianqi@sina.com.cn
qianqi@sina.com.crpeof
egrep "(^[a-zA-Z_][^@ ]{5,17})@[a-zA-Z0-9_-\.]+(\.[a-zA-Z0-9_-\.]+)?\.([a-zA-Z]{2,5})$" a.txt
zhangsan123@qq.com
qianqi@sina.com.cn

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/519171.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows系统安装好MongoDB后运行方法

文章目录 1、先找到安装MongoDB的文件位置的bin文件夹:2、找到data/db文件夹位置(如果data文件夹中没有db文件夹需要创建一个):3、在刚刚打开的cmd窗口中运行以下命令:4、再另外从bin文件夹位置开一个cmd窗口&#xff…

图书管理系统(Java简单版)(完整代码+详解)

目录 详解: BookList类: InOperation接口 User类(父类) 和 Main类(这俩要一起看) 完整代码 book包 Book类 BookList类 operation包 AddBook类 BorrowBook类 DeleteBook类 FindBook类 Pr…

ESP32 FreeRTOS学习总结

2023.5.11 1.Task 创建任务常用API: 任务函数描述xTaskCreate()使用动态的方法创建一个任务xTaskCreatePinnedToCore指定任务的运行核心(最后一个参数)vTaskDelete(NULL)删除当前任务 BaseType_t xTaskCreate(TaskFunction_t pxTaskCode, // 任…

【HBase】架构

文章目录 整体架构Master负载均衡器元数据管理器预写日志处理器 Region ServerZookeeperHDFS Master架构Meta 表格 RegionServer 架构MemStoreWALBlockCache 读写流程HFile结构写流程读操作 整体架构 Master 实现类为 HMaster。 负责监控集群中所有的 RegionServer 实例。 &…

在Fedora-Workstation-Live-x86_64-36-1.5中使用佳能喷墨打印机ip2780

在Fedora-Workstation-Live-x86_64-36-1.5中使用佳能喷墨打印机ip2780 操作系统是64位的Fedora-Workstation-Live-x86_64-36-1.5.iso,实物打印机是佳能ip2780,USB接口 应用程序——其它——设置——打印机——解锁——输入root密码——将打印机USB插入电…

Redis数据结构——动态字符串、Dict、ZipList

一、Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串,因为C语言字符串存在很多问题: 获取字符串长度…

智慧产业城彰显中国智造魅力,中联重科踏出“走上去”的关键一步

5月11日至14日,中联重科在长沙举行了“科技献礼新时代”系列活动。 借着活动,松果财经实地探访了全球规模最大、品种最全的工程机械产业基地,领略了前沿技术赋能先进制造的魅力。 作为湖南省“一号工程”和“十大重点项目之首”&#xff0c…

好家伙,又一份牛逼笔记面世了...

最近网传的一些裁员的消息,搞的人心惶惶。已经拿到大厂offer的码友来问我:大厂还能去,去了会不会被裁。 还在学习的网友来问我:现在还要冲互联网么? 我是认为大家不用恐慌吧,该看啥看啥,该学啥…

你一定要知道的unittest自动化测试框架详解

目录 框架的概念 Unittest单元测试框架 常用的assert语句 unittest创建测试代码的方式: unittest构建测试套件(测试用例集合): unittest忽略测试用例: 运行测试集 批量执行测试用例 生成HTMLTestRunner测试报告…

【运维知识进阶篇】集群架构-Nginx基础(安装+启动+配置+多业务实现+日志管理)

本篇文章介绍下Nginx有关内容,Nginx是一个开源且高性能、可靠的Http Web服务、代理服务。 开源:直接获取源代码,高性能:支持海量并发,可靠:服务稳定 Web服务有很多,选择Nginx是因为他的轻量化…

【软件测试】测试开发的一生之敌-BUG

文章目录 1.前言2.如何描述/创建一个BUG3.BUG的级别4.BUG的生命周期5.跟开发产生争执怎么办 1.前言 BUG相比大家都知道,程序运行出错或者与预期不符就是BUG.现在我们来用测试人员的角度来看待BUG. 2.如何描述/创建一个BUG 测试人员要测试开发人员的代码,找出开发人员可能忽略…

敏态开发在大兴机场数字化转型中的实践

一、最大事业是育人 大兴机场是一个年轻的企业,作为一个企业来讲,最宝贵的就是人才。我们在2017年开始社招大学生,到目前为止,公司有一半都是30岁左右的年轻人,并且每年都会招几十个。年轻人特别想做事,而…

C++之内存管理及函数模版

C中的内存管理机制和C语言是一样的,但在具体内存管理函数上,C语言的malloc已经无法满足C面向对象销毁的需求,于是祖师爷在C中新增了一系列内存管理函数,即 new 和 delete 著名段子:如果你还没没有对象,那就…

( 位运算 ) 342. 4的幂 ——【Leetcode每日一题】

❓342. 4的幂 难度:简单 给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 n 是 4 的幂次方需满足:存在整数 x 使得 n 4 x n 4^x n4x。 示例 1&…

src学习记录(二)

学习目标: Apache Shiro ThinkPHP struts2 Apache Log4j Fastjson Weblogic 学习内容: 1.Apache Shiro 字段内容指纹信息请求包中,在Cookie信息中给 rememberMe变量赋任意值,收到返回包的Set-Cookie 值存在 rememberMedeleteMe …

类和对象【C++】【下篇】

目录 一、初始化列表 二、隐式类型转换 三、静态成员 四、友元 1、友元函数 2、友元类 五、内部类 六、匿名对象 一、初始化列表 下面是日期类的一个构造函数,调用该构造函数后,对象中已经有了一个初始值,但并不能将它称为对对象成员变…

实时操作系统内存管理-TLSF算法

内存管理-TLSF算法 前言TLSF算法:为什么内存又叫内存“块”:O(1)查找空闲块:确定fl:确定sl:提级申请:分割块: 空闲块如何串成链表?减少外部碎片:查找上下块: …

Java补充之MySQL入门必备知识

文章和代码已经归档至【Github仓库:https://github.com/timerring/java-tutorial 】或者公众号【AIShareLab】回复 java 也可获取。 文章目录 零基础学MySQL解决之道文件、数据库MySQL 数据库的安装和配置使用命令行窗口连接MYSQL 数据库操作示意图 数据库三层结构数…

使用Intellij IDEA创建新项目时,maven路径总是默认的,一创建maven就卡死

目录 使用Intellij IDEA创建新项目时,maven路径总是默认的 弄了老半天,终于把这个破玩意给弄好了,真的没有意思,真的很恶心 我经历了两个过程,一个是 使用Intellij IDEA创建新项目时,maven路径总是默认的…