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. springboot整合shiro

    请大家在看本文之前,先了解如下知识点: 1.Shiro 是什么?怎么用? 2.Cas 是什么?怎么用? 3.最好有Spring基础 可以先看看这两篇文章,按照这2篇文章的内容做一遍: Spring B ...

  2. 如何管理Session(防止恶意共享账号)——理论篇

    目录 知识要求 背景 技术原理 如何管理Session remember me的问题 附录 知识要求 有一定的WEB后端开发基础,熟悉Session的用法,以及与Redis.Database的配合 本 ...

  3. 苹果快速的修复了Mac OS High Sierra 上出现了root的漏洞

    最近苹果因为Mac最新系统 Mac OS High Sierra 上出现了root的漏洞走上了风口浪尖,不过还好,在一封苹果给科技媒体'9to5 Mac'的回复中得知,苹果在接收到报告之后,立即展开修 ...

  4. win下搭建python3+PyQt5+eric6环境

    一.安装python3 1.下载python3的安装包,默认安装即可,注意勾选 Add Python 3.6 to Path .但是这样默认安装的路径太长,不太方便找到,可选择定制安装,自己定义安装路 ...

  5. openstack pike 单机 一键安装 shell

    #openstack pike 单机  centos 一键安装 shell #openstack pike 集群高可用  安装部署 汇总 http://www.cnblogs.com/elvi/p/7 ...

  6. ML笔记:Gradient Descent

    Review: Gradient Descent Tip 1: Tuning your learning rates eta恰好,可以走到局部最小值点; eta太小,走得太慢,也可以走到局部最小值点; ...

  7. HDU 1317XYZZY spfa+判断正环+链式前向星(感觉不对,但能A)

    XYZZY Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  8. Shell 初步学习

    Shell 概述 Shell:Linux命令解释器 脚本执行方式 chmod 755 脚本名:赋权限(调用必须显示的使用绝对路径或相对路径) bash 脚本名:通过Bash调用执行脚本 命令别名 al ...

  9. centos7 忘记mysql root密码办法

    1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和 ...

  10. javascript设计模式——迭代器模式

    前面的话 迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示.迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也 ...