cut字段提取命令
格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| [ root@localhost ~ ] $ cut [ 选项 ] 文件名
选项:
-f
-d
示例: [ root@localhost ~ ] $ vim student.txt
// ID Name gender Mark
// 1 libai M 78
// 2 hanxin M 87
// 3 wanwei M 89
[ root@localhost ~ ] $ cut -f2 student.txt 提取表中的第二列
// Name
// libai
// hanxin
// wanwei
[ root@localhost ~ ] $ cut -f2,3 student.txt // 提取表中的第二列和第三列
[ root@localhost ~ ] $ cut -d“:”-f 1,3 /etc/passwd // 以“:”为分隔符,提取用户户表的第二列和第三列
|
printf命令
格式
1 2 3 4
| [ root@localhost ~ ] $ printf ' 输出类型和输出格式 ' $(cut 文件名)
[ root@localhost ~ ] $ printf ' 输出类型和输出格式 ' 输出内容
|
输出类型:
%ns
输出字符串。n是数字,指输出几个字符
%ni
输出整数。n是数字,指输出几个数字
%m.nf
输出浮点数。m、n是数字,指输出的整数位数和小数位数。
如:%8.2f
代表一共输出为8位数,其中2位是小数,6位使正式
输出格式:
a 输出警告声音
b 输出退格键,就是backspace键
f 清除屏幕
n 换行
r 回车,就是enter键
t 水平输出退格键,就是tab键
v 垂直输出退格键,就是tab键
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| [ root@localhost ~ ] $ printf %s 1 2 3 4 5 6 // 123456
[ root@localhost ~ ] $ printf %s %s %s 1 2 3 4 5 6 // %s%s123456
[ root@localhost ~ ] $ printf ' %s %s %s ' 1 2 3 4 5 6 // 1 2 34 5 6
[ root@localhost ~ ] $ printf ' %s %s %s n ' 1 2 3 4 5 6
// 1 2 3 // 4 5 6
[ root@localhost ~ ] $ printf '%s' $(cat student.txt) #不调整输出格式
[ root@localhost ~ ] $ printf ' %st %st %st n ' $(cat student.txt) #调整输出格式
|
awk命令
概述
在awk命令的输出中支持print和printf命令
print:会在每个输出之后自动添加一个换行符(linux默认没有print命令)
Printf:是标准格式输出命令,并不会自动添加换行符,需要手动添加换行符
格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| [ root@localhost ~ ] $ awk ' 条件1{动作1} 条件2{动作2}…' 文件名
# 条件(pattern):一般使用关系表达式作为条件 x>10 x>=10 x<=10
# 动作(action): 格式化输出 流程控制语句
示例:
[ root@localhost ~ ] $ awk '{printf $2 "t" $6 "n"}' student.txt # 输出并打印student文件的第2和第6列。$n:当前处理行的第n个字段(第n列)
[ root@localhost ~ ] $ df -h | awk '{print $1 "t" $3}'
# 输出并打印磁盘占用的第1和第3列。Df -h:查看磁盘的占用情况
|
begin
1
| [ root@localhost ~ ] $ awk 'BEGIN{printf "This is a transcript n"}' {printf $2 "t" $6 "n"}' student.txt
|
FS内置变量
1 2 3
| [ root@localhost ~ ] $ cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN {FS=":"} {printf $1 "t" $3 "n"}'
# 输出用户信息,开始第一次读取时以(FS=“:”)“:”分隔符分割,并打印出第1字段和第3字段
|
关系运算符
1 2 3
| [ root@localhost ~ ] $ cat student.txt | grep -v Name | awk '$6>=87 {printf $2 "n"}'
# grep -v Name:输出排除有“Name”字符的行,打印出符合条件第6字段大于等于87的第2列信息
|
sed命令
概述
sed是一种几乎包括在所有unix平台的轻量级的编辑器。主要用来将数据进行选取、替换、删除、新增的命令
格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| [ root@localhost ~ ] $ sed [ 选项 ] ‘[ 动作 ]’文件名
选项:
-n
-e
-i
动作:
a\
示例://(2a)表示第二行后
c\
i\
d
p
s
|
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [ root@localhost ~ ] $ sed '2p' student.txt # 查看文件的第二行
[ root@localhost ~ ] $ sed -n '2p' student.txt # 将sed命令处理的数据输出到屏幕
[ root@localhost ~ ] $ sed ‘2,4d’student.txt # 删除第二行到第四行的数据,但不修改文件本身数据
[ root@localhost ~ ] $ sed ‘2a hello’ student.txt # 在第二行添加为“hello”的一行
[ root@localhost ~ ] $ sed ‘2i hello \world’ student.txt # 在第二行前分别添加为“hello”与“world”的两行
[ root@localhost ~ ] $ sed ‘2c mylove’ student.txt # 将第二行的数据替换成“mylove”的行
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| 格式: [ root@localhost ~ ] $ sed ‘行范围s/旧字符串/新字符串/g’文件名
示例: [ root@localhost ~ ] $ sed '3s/74/99/g' student.txt
# 将第三行中的74替换为99
示例: [ root@localhost ~ ] $ sed -i '3s/74/99/g' student.txt
# 将第三行中的74替换为99,并将sed命令处理的数据直接写入文件
示例: [ root@localhost ~ ] $ sed -e 's/74// ; s/99//g' student.txt
# 将所有行中的为74和99的数据替换为空
|