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
mail
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
mail
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
mail
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的更多相关文章

  1. Java面向对象 第2节 Scanner 类和格式化输出printf

    §Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 1.创建 Scanner 对象的基本语法:Scanner s = ...

  2. 【转】java格式化输出 printf 例子

    [转]java格式化输出 printf 例子 转自http://www.cnblogs.com/TankMa/archive/2011/08/20/2146913.html#undefined imp ...

  3. 【JAVA】格式化打印printf的使用

    格式化打印printf的使用 import java.util.Date; /** * 使用printf输出 */ /**关键技术点 * 使用java.io.PrintStream的printf方法实 ...

  4. linux截取指定字符shell cut awk

    [root@mylab demo]# echo $var939f61b61978a589d9873e9ea7fdf201b213dec2[root@mylab demo]# echo ${var:0: ...

  5. python批量重命名【截取文件名前六个字符 】

    #!/usr/bin/python # -*- coding: UTF-8 -*- import os, sys # 打开文件 path = "/home/landv/Desktop/l/& ...

  6. Oracle 截取字符串(截取固定分隔符中间的字符

    #### Oracle 截取字符串(截取固定分隔符中间的字符) #### ####  oracle 取固定分隔符之间的字符--方法一 substr+ instrSELECT  substr('12JP ...

  7. php 截取字符串第一个字符,截取掉字符串最后一个字符的方法

    php 截取字符串第一个字符,php截取掉字符串最后一个字符的方法: $frist = substr( $c_url, 0, 1 ); $delete_last = substr(base_url() ...

  8. 截取Excel字符串的部分字符

    截取Excel字符串的部分字符 我们可以使用Mid.Left.Right等函数从长字符串内获取一部分字符.  ①LEFT函数:  LEFT(text,num_chars)  Text是包含要提取字符的 ...

  9. 作业题:输出单个字符 输入单个字符 scanf printf

    输出单个字符用putchar() #include <iostream> using namespace std; int main(){ char x='B'; char y='O'; ...

随机推荐

  1. Shell 快速指南

    Shell 快速指南 ███████╗██╗ ██╗███████╗██╗ ██╗ ██╔════╝██║ ██║██╔════╝██║ ██║ ███████╗███████║█████╗ ██║ ...

  2. sqli-libs

    这是抄袭你们  铃兰师姐总结的,尽管她很不情愿. (现在只是第八关,相信她会努力的,一定会做完,我也会随时在这个上面更新的,这个是在本地搭建的,想要这个的可以找你们铃兰师姐要啊!!!) less-1: ...

  3. python学习笔记 map&&reduce

    ---恢复内容开始--- 1.map 1)map其实相当对吧运算符进行一个抽象,返回的是一个对象,但是这里不知道为什么不可以对一个map返回变量打印两次,难道是因为回收了? def f(x): ret ...

  4. 二、Hadoop学习笔记————架构学习

    1.成百上千台服务器组成集群,需要时刻检测服务器是否故障 2.用流读取数据更加高效快速 3.存储节点具有运算功能,省略了服务器之间来回传数据的网络带宽限制 4.一次写入,多次访问,不修改数据 5.多平 ...

  5. 物联网蓝牙模块:DA14586蓝牙5模块很快到来

    Dialog半导体的SmartBond系列的下一代产品---DA14586已经发布.该全新的系统级芯片(SoC)是公司首款支持最新蓝牙5.0规范的独立器件,为先进应用提供最低的功耗和无可比拟的功能. ...

  6. python并发编程之多进程一

    一,什么是进程 进程是操作系统结构的基础:是一个正在执行的程序:计算机中正在运行的程序实例:可以分配给处理器并由处理器执行的一个实体: 二,进程与程序的区别 进程即运行中的程序,从中即可知,进程是在运 ...

  7. 2016普及组t3海港

    好的,说说这道题的思路,爆搜队列嘛: 用一个结构体队列存每个人来的时间和他的国籍,用一个vis数组存每个人来的次数,是第一次来sum便加一. 然后从前面第一个人开始扔(原谅我用这个词,因为我找不到更好 ...

  8. Taffy Web开发,Python Flask实践详解

    1. 前言 最近为Taffy自动化测试框架写了个页面,主要实现了用例管理.执行,测试报告查看管理.发送邮件及配置等功能. 2. 实现细节 页面使用Python Flask +Bootstrap开发,还 ...

  9. java设计模式—多工厂模式

    概念           多个工厂模式,是对普通工厂方法的改进,在普通工厂模式中,如果字符串传递出错,则不能正   确创建对象,而多个工厂模式是提供多个工厂方法,分别创建对象.     多个工厂模式关 ...

  10. APP端的网络优化(DNS优化,HTTP优化)

    一.使用httpDNS优化DNS解析和缓存 一般来说在App内用域名发送请求都要经过DNS解析出ip,然后再根据ip去拿对应的资源,这个过程中,如果LocalDNS中存在这个域名对应的ip,就会直接返 ...