博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux命令之cut、split、paste
阅读量:6832 次
发布时间:2019-06-26

本文共 2301 字,大约阅读时间需要 7 分钟。

cut 提取文本并输出

-d 指定分隔符

-c 以字符为单位
-f 以d分割后的第几部分

示例:

1 -d 和-f 使用
取出以:为分隔符,第2部分的内容
[root@mail tmp]# echo ni:hao|cut -d ":" -f2
hao

取出以:为分隔符,第1和第3部分

[root@mail tmp]# echo ni:hao:wo:shi |cut -d : -f 1,3
ni:wo

2 -c 使用

取第2个字符
[root@mail tmp]# echo ni:hao|cut -c 2
i
取2到6的字符
[root@mail tmp]# echo ni:hao|cut -c 2-6
i:hao
取第5个字符之前的字符和第5个字符之后的字符
[root@mail tmp]# echo ni:hao|cut -c -5
ni:ha
[root@mail tmp]# echo ni:hao|cut -c 5-
ao

取出第2和第5个字符

[root@mail tmp]# echo ni:hao|cut -c 2,5
ia

小结:

1,3 表示1和3
1-3 表示1到3
-3 表示开头到第3
3-表示第3到最后

split 分割文件

-b 指定分割后的大小

-l 指定分割后的行数(可以省略,直接用-接数字)
-a 指定后缀长度,默认是2位
-d 使用数字后缀,默认是字母后缀,从a开始

示例:

1 -b 使用(后面接k 、m 或者K、M、G)

每个文件10M大小分割maillog
[root@mail tmp]# split -b 10m maillog
[root@mail tmp]# ll -h|tac
-rw-r--r-- 1 root root 8.1M Jun 21 09:18 xac
-rw-r--r-- 1 root root 10M Jun 21 09:18 xab
-rw-r--r-- 1 root root 10M Jun 21 09:18 xaa

2 以30行为单位,分割passwd文件,分割的文件以new为开头

[root@mail tmp]# split -l 30 passwd new
[root@mail tmp]# ls -ltr|tac
-rw-r--r-- 1 root root 1370 Jun 21 09:26 newaa
-rw-r--r-- 1 root root 1501 Jun 21 09:26 newab
-rw-r--r-- 1 root root 1513 Jun 21 09:26 newac
-rw-r--r-- 1 root root 1493 Jun 21 09:26 newad
-rw-r--r-- 1 root root 1097 Jun 21 09:26 newae

3 以50行分割passwd,分割后文件以pa开头,并且以3位数字为后缀

[root@mail tmp]# split -l 50 -da3 passwd pa
[root@mail tmp]# ll -rt|tac
-rw-r--r-- 1 root root 2363 Jun 21 09:32 pa000
-rw-r--r-- 1 root root 2542 Jun 21 09:32 pa001
-rw-r--r-- 1 root root 2069 Jun 21 09:32 pa002

paste 合并文件

-d 指定合并的分隔符
-s 每个文件占用一行

示例:

1 -d 示例
[root@mail tmp]# cat paste1 paste2
a
b
c
1
2
3
简单合并
[root@mail tmp]# paste paste1 paste2
a 1
b 2
c 3

使用-d 指定:为分隔符合并

[root@mail tmp]# paste -d : paste1 paste2
a:1
b:2
c:3

2 -s使用 (合并后,每个文件占用一行)

[root@mail tmp]# paste -s paste1 paste2
a b c
1 2 3

3 特殊用法

调整user的文件格式为stu1=abc
[root@mail tmp]# cat user
stu1
abc
stu2
fff
stu3
d3a
方法1:
[root@mail tmp]# paste -s user
stu1 abc stu2 fff stu3 d3a
-s 后面接一个文件时候就是调整了显示方式
[root@mail tmp]# paste -sd "=\n" user
stu1=abc
stu2=fff
stu3=d3a

方法二:

[root@mail tmp]# paste -d = - -<user
stu1=abc
stu2=fff
stu3=d3a
从标准输入读取,每个-代表一行

其他实现方法

[root@mail tmp]# xargs -n2 <user |sed 's# #=#g'
stu1=abc
stu2=fff
stu3=d3a

[root@mail tmp]# sed 'N;s#\n#=#g' user

stu1=abc
stu2=fff
stu3=d3a

N ,sed内置命令,不会清空模式空间内容。N命令相当于

第二行读取后模式空间内容为stu1\nabc ,然后替换后输出

转载于:https://blog.51cto.com/shaiyawu/2131197

你可能感兴趣的文章
Linux 典型应用之Mysql
查看>>
架构设计之策略模式
查看>>
理解距(数学)
查看>>
web 开发之js---js 实现网页中播放wav的一种方法(flash播放器)
查看>>
openwrt下部署adbyby去广告大师 免luci 带自启动,自动开启透明代理
查看>>
[.Net 多线程处理系列专题七——对多线程的补充
查看>>
shell code one
查看>>
适配手机端浏览器
查看>>
面向对象
查看>>
[LeetCode] 526. Beautiful Arrangement
查看>>
获取本机IP,用户代理
查看>>
apple watch 与 iphone 之间的通信方式
查看>>
Ubantu 查看系统资源占用
查看>>
Oracle EBS在编码方式为AL32UTF8时的注意事项
查看>>
linux那些事
查看>>
通信服务器的架构问题
查看>>
所见即所得的游戏界面开发
查看>>
python 学习笔记 五
查看>>
Qt 乱码
查看>>
SpringMVC由浅入深day01_7入门程序小结
查看>>