目录
1. less命令
2. cut 命令
3. head和tail命令
4. awk命令
5. tr命令
6. sed 命令
7. uniq 命令
用法:less [option]
##同时打开多个文件
less
点按“q”退出less。利用 man less 查看帮助文档
常见参数:
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
n: 重复前一个搜索(与 / 或 ? 有关)
N: 反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
结合管道符: cat a.txt | less -S
cut 命令在Linux中的作用是从文件中的每一行中截取出一些部分,并输出到标准输出中
cut 命令的局限性之一是它不支持指定多个字符作为分隔符。多个空格会被计算为多个字段分隔符,因此必须在 cut 命令前使用 tr 命令才能获得需要的输出。
-d
:分隔符 ( --delimiter
按照指定分隔符分割列 )-b
: 表示字节-c
: 表示字符-f
: 表示字段(列号) ( --field
提取第几列 )$> cat user.txt
01, zhang, M, 18
02, wang, M, 20
03, li, M, 21
# 以","分隔,显示第二列
$> cut -d "," -f 2 user.txt
zhang
wang
li
# 以","分隔,显示第1列和第3列
$> cut -d "," -f 1,3 user.txt
01, M,
02, M,
03, M,
# 以","分隔,显示第1-3列
$> cut -d "," -f 1-3 user.txt
01, zhang, M,
02, wang, M,
03, li, M,
# 以","分隔,显示除第1列以外的其他列
$> cut -d "," -f 1 --complement user.txt
zhang, M, 18
wang, M, 20
li, M, 21
## 注意前面是有空格的!
###### 字符串
$> cut -c1-5 user.txt
01, zh
02, wa
03, li
head 显示文件头部内容
head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容。
3.1.基本语法
head 文件 (功能描述:查看文件头10行内容)
head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)
3.2.选项说明
-n<行数> 指定显示头部内容的行数
tail输出文件尾部内容
tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。
3.3.基本语法
(1)tail 文件 (功能描述:查看文件尾部10行内容)
(2)tail -n 5 文件 (功能描述:查看文件尾部5行内容,5可以是任意行数)
(3)tail -f 文件 (功能描述:实时追踪该文档的所有更新)
3.4. 选项说明
-n<行数> 输出文件尾部 n 行内容
-f 显示文件最新追加的内容,监视文件变化
awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符“&&”表示“与”、“||”表示“或”、“!”表示“非”;还可以进行简单的数学运算,如+、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。
(base) [hgzhong@head01 Part2.vairant_annotation]$ awk --help
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options: GNU long options: (standard)
-f progfile --file=progfile 从脚本文件中读取awk命令
-F fs --field-separator=fs
-v var=val --assign=var=val var=value 赋值变量,将外部变量传递给awk
Short options: GNU long options: (extensions)
-b --characters-as-bytes
-c --traditional
-C --copyright
-d[file] --dump-variables[=file]
-e 'program-text' --source='program-text'
-E file --exec=file
-g --gen-pot
-h --help
-L [fatal] --lint[=fatal]
-n --non-decimal-data
-N --use-lc-numeric
-O --optimize
-p[file] --profile[=file]
-P --posix
-r --re-interval
-S --sandbox
-t --lint-old
-V --version
FS:列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同
NF:当前处理的行的字段个数。
NR:当前处理的行的行号(序数)。
$0:当前处理的行的整行内容。
$n:当前处理行的第n个字段(第n列)。
FILENAME:被处理的文件名。
RS:行分隔符。awk从文件上读取资料时,将根据RS的定义把读取的资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’
awk 'NR==1,NR==3 {print}' name.txt #输出第 1~3 行内容
awk 'NR==1;NR==3 {print}' name.txt #输出第 1和第3 行内容
awk '(NR>=1)&&(NR<=3) {print}' name.txt #输出第 1~3 行内容
awk 'NR==1||NR==3{print}' name.txt #输出第1行、第3行内容
awk '(NR%2)==1{print}' name.txt #输出所有奇数行的内容
awk '(NR%2)==0{print}' name.txt #输出所有偶数行的内容
awk '/^root/{print}' /etc/passwd #输出以 root 开头的行
awk '/nologin$/{print}' /etc/passwd #输出以 nologin 结尾的行
awk -F ":" '{print $1}' /etc/passwd #输出每行中(以空格或制表位分隔)的第1个字段
awk -F ":" '{print $1,$2,$3}' /etc/passwd #输出每行中的第1-3个字段
awk -F ":" '$3<5{print $1,$3}' /etc/passwd #输出第3个字段的值小于5的第1、3个字段内容
awk -F ":" '!($3<200){print}' /etc/passwd #输出第3个字段的值不小于200的行
awk -F ":" '{print NR,$0}' /etc/passwd #输出每行内容和行号,每处理完一条记录,NR值加1
awk -F ":" '$7~"/bash"{print $0}' /etc/passwd #输出以冒号分隔且第7个字段中包含/bash的行的第1个字段
awk -F ":" '($1~"root")&&(NF==7){print $0}' /etc/passwd #输出第1个字段中包含root且有7个字段的行的第1、2个字段
执行权限:所有用户
语法:tr [OPTION]... SET1 [SET2]
常用参数:
-c 用SET1中字符的补集替换SET1,这里的字符集为ASCII。
-d 删除文件中所有在SET1中出现的字符
-s 删除文件中重复并且在SET1中出现的字符,只保留一个
tr命令不接受指定的文件参数,而只是对标准输入进行翻译。tr的命令格式是tr SET1 SET2,凡是在SET1中的字符,都会被替换为SET2中相应位置上的字符!
字母大小写替换:
##将制表符替换成换行符
tr '\t' '\n'
sed 主要是用来将数据进行选取、替换、删除、新増的命令。我们看看命令的语法:
[root@localhost ~] # sed [选项] '[动作]' 文件名
选项:
大家需要注意,sed 所做的修改并不会直接改变文件的内容(如果是用管道符接收的命令的输出,则连文件都没有),而是把修改结果只显示到屏幕上,除非使用"-i"选项才会直接修改文件。
uniq是对文本文件进行行去去重的工具。
以行为单位,进行行与行之间的字符串比较并进行去重
只能对有序的文本行进行有效去重,所以常与sort命令结合使用
参数 解释
-c 统计行出现的次数
-d 只显示重复的行并且去重
-u 只显示唯一的行
-i 忽略字母大小写
-f 忽略前N个字段(字段间用空白字符分隔)
[root@linuxforliuhj test]# sort hello.sh | uniq
be better
dddddddd
gggggggggggggggggggg
have a nice day
hello this is linux
i am lhj
zzzzzzzzzzzzzz
[root@linuxforliuhj test]#
[root@linuxforliuhj test]# cat hello.sh | sort | uniq -c
3 be better
1 dddddddd
1 gggggggggggggggggggg
3 have a nice day
4 hello this is linux
4 i am lhj
1 zzzzzzzzzzzzzz
[root@linuxforliuhj test]#
先排序使重复的行相邻,然后使用uniq可以有效去重。