字符截取:cut,格式化输出:printf,字符截取:awk,文件或命令输出编辑:sed
cut 选项 文件名
-f 列号 提取第几列
-d 分隔符 指定分隔符把行分成多列
不能以空格为分隔符。
[root@localhost ~]# cat testfile
no. name sex score
zhangsan m
lisi f
wangwu m
[root@localhost ~]# cut -f testfile 注释:默认分隔符是制表符\t
name
zhangsan
lisi
wangwu
[root@localhost ~]# cut -f , testfile
name score
zhangsan
lisi
wangwu
[root@localhost ~]# cat testfile
no. na:me sex sco:re
zhang:san m :
li:si f :
wang:wu m :
[root@localhost ~]# cut -f , -d : testfile
no. na:re
zhang:
li:
wang:
root@localhost ~]# cut -f -d : /etc/passwd|grep xiong
xiongjiawei
[root@localhost ~]# grep xiong /etc/passwd|cut -d : -f
xiongjiawei
[root@localhost ~]# grep xiong /etc/passwd|cut -d ":" -f
xiongjiawei
[root@localhost ~]# grep xiong /etc/passwd|cut -f -d :
xiongjiawei
[root@localhost ~]# grep xiong /etc/passwd|cut -f -d ":"
xiongjiawei
printf '格式' 输出内容
%ns 输出n个字符串
%ni 输出n个数字
%n.mf 输出共n位数字,m位小数,如%5.2f表示共3位整数,2位小数
\a 警告声
\b Backspace键
\f 清屏
\n 换行,常用
\r Enter,常用
\t Tab,常用
\v 垂直Tab
awk支持printf和print(linux默认无此命令),print输出会自动加换行,printf是标准格式输出命令,不会自动加换行,如果要换行需要手动加。
[root@localhost ~]# printf %s a b cd ef g
abcdefg12[root@localhost ~]# printf %s %s a b cd ef g
%sabcdefg12[root@localhost ~]# printf '%s %s' a b cd ef g
a bcd efg [root@localhost ~]# printf '%s\n%s' a b cd ef g
a
bcd
efg [root@localhost ~]# printf '%s %s\n' a b cd ef g
a b
cd ef
g [root@localhost ~]# printf %s $(cat testfile)
no.na:mesexsco:re1zhang:sanm8:82li:sif8:93wang:wum8:[root@localhost ~]#
[root@localhost ~]# cat testfile
no. na:me sex sco:re
zhang:san m :
li:si f :
wang:wu m :
awk '条件1{动作1} 条件2{运行2}...' 文件名
默认以空格为分隔符,执行命令时首先读取文件一行。
[root@localhost ~]# cat testfile
no. name sex score age comment
zhansan m student
li:si f member
wangwu m teacher
[root@localhost ~]# awk {printf $ $} testfile
awk: cmd. line:: {printf
awk: cmd. line:: ^ unexpected newline or end of string 注释:报错的原因是awk命令后的条件动作未加单引号
[root@localhost ~]# awk '{printf $2 $4}' testfile
namescorezhansan88li:si89wangwu87[root@localhost ~]# awk '{printf $2\t$4\n}' testfile
awk: cmd. line:: {printf $\t$\n}
awk: cmd. line:: ^ backslash not last character on line
awk: cmd. line:: {printf $\t$\n}
awk: cmd. line:: ^ syntax error 注释:报错是因为制表符\t未加双引号
[root@localhost ~]# awk '{printf $2 "\t" $4 \n}' testfile
awk: cmd. line:: {printf $ "\t" $ \n}
awk: cmd. line:: ^ backslash not last character on line
awk: cmd. line:: {printf $ "\t" $ \n}
awk: cmd. line:: ^ syntax error 注释:报错是因为换行符\n未加双引号
[root@localhost ~]# awk '{printf $2 "\t" $4 "\n"}' testfile
name score
zhansan
li:si
wangwu
[root@localhost ~]# awk '{printf $2"\t"$4"\n"}' testfile
name score
zhansan
li:si
wangwu
[root@localhost ~]# df -h|awk '{printf $1}'
文件系统/dev/sda5devtmpfstmpfstmpfstmpfs/dev/sda2/dev/sdb5/dev/sdb1/dev/sda1tmpfs[root@localhost ~]# df -h|awk '{printf $1"\n"}'
文件系统
/dev/sda5
devtmpfs
tmpfs
tmpfs
tmpfs
/dev/sda2
/dev/sdb5
/dev/sdb1
/dev/sda1
tmpfs
[root@localhost ~]# df -h|awk '{print $1}'
文件系统
/dev/sda5
devtmpfs
tmpfs
tmpfs
tmpfs
/dev/sda2
/dev/sdb5
/dev/sdb1
/dev/sda1
tmpfs
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda5 % /
devtmpfs % /dev
tmpfs % /dev/shm
tmpfs % /run
tmpfs % /sys/fs/cgroup
/dev/sda2 % /home
/dev/sdb5 % /disk5
/dev/sdb1 % /disk1
/dev/sda1 % /boot
tmpfs % /run/user/
[root@localhost ~]# df -h|grep sda5
/dev/sda5 16G .4G 15G % /
[root@localhost ~]# df -h|grep sda5|awk '{print $5}'
%
[root@localhost ~]# df -h|grep sda5|awk '{print $5}'|cut -d % -f1 注释:cut命令的-f选项后的列序号和f之间可以无空格 [root@localhost ~]# df -h|grep sda5|awk '{print $5}'|cut -d % -f [root@localhost ~]# df -h|grep sda5|awk 'BEGIN{print "This is a title:"}{print $5}'|cut -d % -f
This is a title: [root@localhost ~]# df -h|grep sda5|awk '{print "This is a title:"}{print $5}'|cut -d % -f1
This is a title: [root@localhost ~]# awk '{print $1}' /etc/passwd 注释:awk的默认分隔符是空格
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt
mail:x:::mail:/var/spool/mail:/sbin/nologin
operator:x:::operator:/root:/sbin/nologin
games:x:::games:/usr/games:/sbin/nologin
ftp:x:::FTP
nobody:x:::Nobody:/:/sbin/nologin
systemd-bus-proxy:x:::systemd
systemd-network:x:::systemd
dbus:x:::System
polkitd:x:::User
libstoragemgmt:x:::daemon
abrt:x::::/etc/abrt:/sbin/nologin
rpc:x:::Rpcbind
tss:x:::Account
postfix:x::::/var/spool/postfix:/sbin/nologin
sshd:x:::Privilege-separated
ntp:x::::/etc/ntp:/sbin/nologin
chrony:x::::/var/lib/chrony:/sbin/nologin
tcpdump:x::::/:/sbin/nologin
xiongjiawei:x:::xiongjiawei:/home/xiongjiawei:/bin/bash
qiaofeng:x::::/home/qiaofeng:/bin/bash
yangguo:x::::/home/yangguo:/bin/bash
st:x::::/home/st:/bin/bash
user1:x::::/home/user1:/bin/bash
[root@localhost ~]# awk '{FS=":"}{print $1}' /etc/passwd
root:x:::root:/root:/bin/bash 注释:设置分隔符为冒号:后第一行并未处理,因为awk命令的执行是首先读取第一行
bin
daemon
adm
lp
sync
shutdown
halt
operator
games
ftp
nobody
systemd-bus-proxy
systemd-network
dbus
polkitd
libstoragemgmt
abrt
rpc
tss
postfix
sshd
ntp
chrony
tcpdump
xiongjiawei
qiaofeng
yangguo
st
user1
[root@localhost ~]# awk 'BEGIN{FS=":"}{print $1}' /etc/passwd 注释:加BEGIN后就不会首先读取第一行,而是首先设置分隔符
root
bin
daemon
adm
lp
sync
shutdown
halt
operator
games
ftp
nobody
systemd-bus-proxy
systemd-network
dbus
polkitd
libstoragemgmt
abrt
rpc
tss
postfix
sshd
ntp
chrony
tcpdump
xiongjiawei
qiaofeng
yangguo
st
user1
[root@localhost ~]# awk 'END{print "The end!"}BEGIN{FS=":"}{print $1}' /etc/passwd 注释:有BEGIN就有END,在命令动作中的顺序无所谓
root
bin
daemon
adm
lp
sync
shutdown
halt
operator
games
ftp
nobody
systemd-bus-proxy
systemd-network
dbus
polkitd
libstoragemgmt
abrt
rpc
tss
postfix
sshd
ntp
chrony
tcpdump
xiongjiawei
qiaofeng
yangguo
st
user1
The end!
[root@localhost ~]# cat testfile
no. name sex score age comment
zhansan m student
li:si f member
wangwu m teacher
[root@localhost ~]# awk '$4>88{print $2}' testfile 注释:根据条件执行动作
name
li:si
sed
sed [选项] '[动作]' 文件名
选项:
-n 只输出sed处理过的行
-i 修改原文件
-e 执行多条sed动作
动作:
p 打印,例2p打印第2行,2,3p打印第2、3行
d 删除,例‘3,4d',不输出第3、4行
a 追加,例'2a Welcome to China',在第2行后换行追加Welcom to China
i 插入,例'2i Welcom to China',在第2行前插入Welcom to China,即在第1行后换行插入Welcom to China
c 行替换
s 字符串替换
[root@localhost ~]# cat testfile
no. name sex score age comment
zhansan m student
li:si f member
wangwu m teacher
[root@localhost ~]# sed '2p' testfile 注释:不加选项-n时即输出原文件又输出经过处理的结果
no. name sex score age comment
zhansan m student
zhansan m student
li:si f member
wangwu m teacher
[root@localhost ~]# sed -n '2p' testfile
zhansan m student
[root@localhost ~]# sed -n '2,3p' testfile
zhansan m student
li:si f member
[root@localhost ~]# df -h|sed -n '2p'
/dev/sda5 16G .4G 15G % /
[root@localhost ~]# sed '3,4d' testfile
no. name sex score age comment
zhansan m student
[root@localhost ~]# df -h|sed '2a This is added words'
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda5 16G .4G 15G % /
This is added words
devtmpfs 479M 479M % /dev
tmpfs 489M 489M % /dev/shm
tmpfs 489M 6.8M 482M % /run
tmpfs 489M 489M % /sys/fs/cgroup
/dev/sda2 .0G 33M .0G % /home
/dev/sdb5 .0G 6.0M .8G % /disk5
/dev/sdb1 976M 2.6M 907M % /disk1
/dev/sda1 197M 114M 83M % /boot
tmpfs 98M 98M % /run/user/
[root@localhost ~]# df -h|sed '2i This is added words'
文件系统 容量 已用 可用 已用% 挂载点
This is added words
/dev/sda5 16G .4G 15G % /
devtmpfs 479M 479M % /dev
tmpfs 489M 489M % /dev/shm
tmpfs 489M 6.8M 482M % /run
tmpfs 489M 489M % /sys/fs/cgroup
/dev/sda2 .0G 33M .0G % /home
/dev/sdb5 .0G 6.0M .8G % /disk5
/dev/sdb1 976M 2.6M 907M % /disk1
/dev/sda1 197M 114M 83M % /boot
tmpfs 98M 98M % /run/user/
[root@localhost ~]# df -h|sed '2i This is \added words'
文件系统 容量 已用 可用 已用% 挂载点
This is dded words
/dev/sda5 16G .4G 15G % /
devtmpfs 479M 479M % /dev
tmpfs 489M 489M % /dev/shm
tmpfs 489M 6.8M 482M % /run
tmpfs 489M 489M % /sys/fs/cgroup
/dev/sda2 .0G 33M .0G % /home
/dev/sdb5 .0G 6.0M .8G % /disk5
/dev/sdb1 976M 2.6M 907M % /disk1
/dev/sda1 197M 114M 83M % /boot
tmpfs 98M 98M % /run/user/
[root@localhost ~]# df -h|sed '2i This is \
> added words'
文件系统 容量 已用 可用 已用% 挂载点
This is
added words
/dev/sda5 16G .4G 15G % /
devtmpfs 479M 479M % /dev
tmpfs 489M 489M % /dev/shm
tmpfs 489M 6.8M 482M % /run
tmpfs 489M 489M % /sys/fs/cgroup
/dev/sda2 .0G 33M .0G % /home
/dev/sdb5 .0G 6.0M .8G % /disk5
/dev/sdb1 976M 2.6M 907M % /disk1
/dev/sda1 197M 114M 83M % /boot
tmpfs 98M 98M % /run/user/
[root@localhost ~]# sed '2c deleted...' testfile
no. name sex score age comment
deleted...
li:si f member
wangwu m teacher
[root@localhost ~]# sed '2c deleted...\
> new lines!!!' testfile
no. name sex score age comment
deleted...
new lines!!!
li:si f member
wangwu m teacher
[root@localhost ~]# cat testfile
no. name sex score age comment
zhansan m student
li:si f member
wangwu m teacher [root@localhost ~]# sed '3s/li:si/lisi/g' testfile 注释:2表示行序号,不加数字表示替换整个文档
no. name sex score age comment
zhansan m student
lisi f member
wangwu m teacher
[root@localhost ~]# cat testfile
no. name sex score age comment
zhansan m student
li:si f member
wangwu m teacher
[root@localhost ~]# sed -i '3s/li:si/lisi/g' testfile 注释:-i选项表示修改原文件,此选项有一定风险性,慎用,如果需要修改文件内容建议使用vim
[root@localhost ~]# cat testfile
no. name sex score age comment
zhansan m student
lisi f member
wangwu m teacher
[root@localhost ~]# sed -e '2s/zhansan/sanzhan/g;3s/li/Li/g' testfile
no. name sex score age comment
sanzhan m student
Lisi f member
wangwu m teacher
字符截取:cut,格式化输出:printf,字符截取:awk,文件或命令输出编辑:sed的更多相关文章
- Java面向对象 第2节 Scanner 类和格式化输出printf
§Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 1.创建 Scanner 对象的基本语法:Scanner s = ...
- 【转】java格式化输出 printf 例子
[转]java格式化输出 printf 例子 转自http://www.cnblogs.com/TankMa/archive/2011/08/20/2146913.html#undefined imp ...
- 【JAVA】格式化打印printf的使用
格式化打印printf的使用 import java.util.Date; /** * 使用printf输出 */ /**关键技术点 * 使用java.io.PrintStream的printf方法实 ...
- linux截取指定字符shell cut awk
[root@mylab demo]# echo $var939f61b61978a589d9873e9ea7fdf201b213dec2[root@mylab demo]# echo ${var:0: ...
- python批量重命名【截取文件名前六个字符 】
#!/usr/bin/python # -*- coding: UTF-8 -*- import os, sys # 打开文件 path = "/home/landv/Desktop/l/& ...
- Oracle 截取字符串(截取固定分隔符中间的字符
#### Oracle 截取字符串(截取固定分隔符中间的字符) #### #### oracle 取固定分隔符之间的字符--方法一 substr+ instrSELECT substr('12JP ...
- php 截取字符串第一个字符,截取掉字符串最后一个字符的方法
php 截取字符串第一个字符,php截取掉字符串最后一个字符的方法: $frist = substr( $c_url, 0, 1 ); $delete_last = substr(base_url() ...
- 截取Excel字符串的部分字符
截取Excel字符串的部分字符 我们可以使用Mid.Left.Right等函数从长字符串内获取一部分字符. ①LEFT函数: LEFT(text,num_chars) Text是包含要提取字符的 ...
- 作业题:输出单个字符 输入单个字符 scanf printf
输出单个字符用putchar() #include <iostream> using namespace std; int main(){ char x='B'; char y='O'; ...
随机推荐
- iOS开发经验总结
总结了几个月的东西终于能和大家分享了,不多说,直接看东西! 1.禁止手机睡眠 1 [UIApplication sharedApplication].idleTimerDisabled = YES; ...
- ssh 免密钥失败原因
1.权限问题 本地端 ssh chmod 777 ~/.ssh sudo chmod 777 /home/当前用户 远程端 .ssh目录下的authorized_keys sudo chmod 777 ...
- formData实现图片上传
前言 在 上一篇 已经实现了图片预览,那么如何上传图片呢?有两种思路: 1.将图片转化为dataURL(base64),这样就成为了一串字符串,再传到服务端.不过这样缺点很多,数据量比转换之前增加1/ ...
- android sdk manager 国内镜像
//东软信息学院 mirrors.neusoft.edu.cn 80 //北京化工大学 ubuntu.buct.edu.cn/ubuntu.buct.cn 80 //中国科学院开源协会 mir ...
- jq获取被选中的option的值。jq获取被选中的单选按钮radio的值。
温故而知新,一起复习下jq的知识点. (1) jq获取被选中的option的值 <select id="select_id"> <option value=&qu ...
- java中的static和final关键字
一:static 1)修饰成员变量: static关键字可以修饰成员变量,它所修饰的成员变量不属于对象的数据结构,而是属于类的变量,通常通过类名来引用static成员. 当创建对象后,成员变量是存储在 ...
- JavaScript学习笔记(十四)——对象
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- javascript图片隐写术,感觉可以用它来干点有想法的事情
1.什么是图片隐写术? 权威的wiki说法是“隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容.”,图片隐写术简而言之就是利用图片 ...
- thinkphp系列:类的自动加载是如何设计的
在使用框架开发时,可以发现框架有很多核心类,却很少看到显示的引入某个文件的代码,这是因为框架都采用了类的自动加载机制,即使用到类时,框架会自动找到该类所在文件的位置并引入该文件.为了更容易看出代码思路 ...
- 来自朝鲜的问候 golang入坑系列
鸿渐于陆 本想着写满十八式,但按照目前的进度来看,是很难凑够十八式了.所以还是那句话,量力而行,适可而止.能写多少就写多少,我没法保证看完这本golang脱口秀,一定能成为golang大拿.但入了门, ...