linux中常见命令(1)

目录

1. less命令

2. cut 命令

3. head和tail命令

4. awk命令

5. tr命令

6. sed 命令

7. uniq 命令


1. less命令

用法: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

2. cut 命令

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

3. head和tail命令

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 显示文件最新追加的内容,监视文件变化

4. awk命令

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个字段

5. tr命令

执行权限:所有用户

语法:tr [OPTION]... SET1 [SET2]

常用参数:

-c 用SET1中字符的补集替换SET1,这里的字符集为ASCII。

-d 删除文件中所有在SET1中出现的字符

-s 删除文件中重复并且在SET1中出现的字符,只保留一个

tr命令不接受指定的文件参数,而只是对标准输入进行翻译。tr的命令格式是tr SET1 SET2,凡是在SET1中的字符,都会被替换为SET2中相应位置上的字符!

字母大小写替换:

linux中常见命令(1)_第1张图片

##将制表符替换成换行符
tr '\t' '\n'

6. sed 命令

sed 主要是用来将数据进行选取、替换、删除、新増的命令。我们看看命令的语法:

[root@localhost ~] # sed [选项] '[动作]' 文件名

选项:

  • -n:一般 sed 命令会把所有数据都输出到屏幕上。如果加入此选项,则只会把经过 sed 命令处理的行输出到屏幕上;
  • -e: 允许对输入数据应用多条 sed 命令编辑;
  • -f 脚本文件名:从 sed 脚本中读入 sed 操作。和 awk 命令的 -f 选项非常类似;
  • -r:在 sed 中支持扩展正则表达式;
  • -i:用 sed 的修改结果直接修改读取数据的文件,而不是由屏幕输出动作;
  • a \:追加,在当前行后添加一行或多行。当添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结;
  • c \:行替换,用c后面的字符串替换原数据行。当替换多行时,除最后一行外,每行末尾需用“\”代表数据未完结;
  • i \:插入,在当前行前插入一行或多行。当插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结;
  • d:删除,删除指定的行;
  • P:打印,输出指定的行;
  • s:字符串替换,用一个字符串替换另一个字符串。格式为“行范围s/旧字串/新字串/g”(和Vim中的替换格式类似);


大家需要注意,sed 所做的修改并不会直接改变文件的内容(如果是用管道符接收的命令的输出,则连文件都没有),而是把修改结果只显示到屏幕上,除非使用"-i"选项才会直接修改文件。

7. uniq 命令

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可以有效去重。

你可能感兴趣的:(命令,linux)