运维开发网

Linux基本命令(三)

运维开发网 https://www.qedev.com 2020-09-09 12:00 出处:51CTO 作者:木雨林风
文件过滤和内容编辑命令1、cat查看文件内容或合并文件cat>file.txt后面接要写的内容,ctrl+d结束输入cat>>file.txt<<EOFhello,world!EOFcat/dev/null>file.txt参数:-n行号-b忽略空白行行号-E把行尾隐藏的结束标识符$显示出来cat>test.txt<<-EOFhello,wor

文件过滤和内容编辑命令

1、cat 查看文件内容 或 合并文件

cat>file.txt 后面接要写的内容,ctrl+d结束输入

cat>>file.txt<<EOF

hello,world!

EOF

cat /dev/null >file.txt

参数:-n行号 -b忽略空白行行号 -E把行尾隐藏的结束标识符$显示出来

cat >test.txt<<-EOF

hello,world!

EOF

#如果使用了-EOF,结尾的EOF可以不用顶格写

利用cat在脚本中显示帮助菜单

#!/bin/bash

menu()

{

cat <<END

usage:$0 {start|stop|status|reboot}

END

}

menu

2、more 分页显示文件内容

more -5 /etc/passwd

more +10 /etc/passwd 从第10行开始

3、less -N显示行号

4、head 显示文件头部内容,默认前10行

5、tail 显示文件尾部内容

6、tailf 跟踪日志文件

7、cut 从文本中截取一段文字并输出

参数:-b以字节为单位 -c以字符为单位 -d自定义分隔符 -f指定显示哪个区域

[root@localhost dir]# cat test.txt

I learn Linux command and shell my qq is 123456789

[root@localhost dir]# cut -b 4 test.txt

e

[root@localhost dir]# cut -b 3-7 test.txt

learn

[root@localhost dir]# cut -b 3-7,9-13 test.txt

learnLinux

[root@localhost dir]# cut -b 3- test.txt

learn Linux command and shell my qq is 123456789

[root@localhost dir]# cut -b -13 test.txt

I learn Linux

[root@localhost dir]# cut -d: -f 1 /etc/passwd |tail -5

mysql

gdm

sshd

nslcd

tcpdump

[root@localhost dir]# cut -d: -f 3-5 /etc/passwd |head -5

0:0:root

1:1:bin

2:2:daemon

3:4:adm

4:7:lp

8、split 分割文件,可以按照指定的行数或指定的文件大小分割文件

9、paste 合并文件

10、sort 文本排序

参数:-n按数值大小排序 -u去重复行 -t指定分隔符 -k按指定区域排序 -r倒序排列

默认以行为单位进行排序

[root@localhost dir]# cat>3.txt

2

33

57

18

49

4

79

0

23

[root@localhost dir]# sort 3.txt

0

18

2

23

33

4

49

57

79

[root@localhost dir]# sort -n 3.txt

0

2

4

18

23

33

49

57

79

[root@localhost dir]# sort -nr 3.txt

79

57

49

33

23

18

4

2

0

[root@localhost dir]# cat 3.txt

2

33

57

18

49

4

79

0

23

33

4

4

49

33

[root@localhost dir]# cat 3.txt |sort -n

0

2

4

4

4

18

23

33

33

33

49

49

57

79

[root@localhost dir]# cat 3.txt |sort -nu

0

2

4

18

23

33

49

57

79

[root@localhost dir]# cat>4.txt

23 b

4 g

17 a

6 i

88 f

9 r

[root@localhost dir]# sort 4.txt

17 a

23 b

4 g

6 i

88 f

9 r

默认以第一列进行排序

[root@localhost dir]# sort -t " " -k2 4.txt

17 a

23 b

88 f

4 g

6 i

9 r

-t指定以空格作为分隔符,-k2指定按第2列进行排序

[root@localhost dir]# sort -t " " -k1 4.txt

17 a

23 b

4 g

6 i

88 f

9 r

[root@localhost dir]# sort -t " " -k1 -n 4.txt

4 g

6 i

9 r

17 a

23 b

88 f

11、uniq 去除重复行,常用sort先排序,然后uniq去重

参数:-c显示重复行出现的次数 -u只显示唯一的行 -d只显示重复的行

[root@localhost dir]# cat 3.txt

2

33

57

18

49

4

79

0

23

33

4

4

49

33

[root@localhost dir]# uniq -c 3.txt

1 2

1 33

1 57

1 18

1 49

1 4

1 79

1 0

1 23

1 33

2 4

1 49

1 33

[root@localhost dir]# uniq -d 3.txt

4

你会发现uniq只能对相邻的重复行进行去重操作

[root@localhost dir]# sort -n 3.txt |uniq

0

2

4

18

23

33

49

57

79

12、wc 统计文件的行数,单词数,字符数 参数 -l

[root@localhost dir]# wc /etc/inittab

26 149 884 /etc/inittab

13、iconv 转换文件的编码格式

14、dos2unix

15、diff 比较两个文件的不同

16、vimdiff可视化比较工具

17、tr 替换或删除字符,从标准输入中替换,缩减或删除字符,并将结果写到标准输出

[root@localhost dir]# cat tr.txt

my name is Linux shell

my qq is 123456

[root@localhost dir]# tr 'qq' 'QQ'<tr.txt

my name is Linux shell

my QQ is 123456

[root@localhost dir]# tr 'abc' 'xyz' <tr.txt

my nxme is Linux shell

my qq is 123456

[root@localhost dir]# tr '[a-z]' '[A-Z]'<tr.txt

MY NAME IS Linux SHELL

MY QQ IS 123456

[root@localhost dir]# tr '[0-9]' '[a-j]'<tr.txt

my name is Linux shell

my qq is bcdefg

删除文件中出现的Linux中的每个字符

[root@localhost dir]# tr -d 'Linux' <tr.txt

my ame s she

my qq s 123456

删除文件中的制表符和换行符

[root@localhost dir]# tr -d '\n\t' <tr.txt

[root@localhost dir]# echo 'ooooooooldmannnnnnnnn' | tr -s oldman

oldman

[root@localhost dir]# tr '0-9' '*' <tr.txt

my name is Linux shell

my qq is **

[root@localhost dir]# tr -c '0-9' '*' <tr.txt

****123456*[root@localhost dir]#

18、tee多重定向

tee命令用于将数据重定向到文件,同时提供一份重定向数据的副本作为后续命令的标准输入

[root@localhost dir]# ls|tee ls.txt

1.txt

2.txt

3.txt

4.txt

dir1

dir2

dir3

ip.txt

test.exe

test.txt

tr.txt

[root@localhost dir]# cat ls.txt

1.txt

2.txt

3.txt

4.txt

dir1

dir2

dir3

ip.txt

test.exe

test.txt

tr.txt

屏幕上输出的同时将结果也输出到文件

ls | tee -a ls.txt 追加内容到文件中

19、vi编辑器

普通模式 编辑模式 命令模式

G 将光标移到文件最后一行

gg 将光标移到文件第一行

0 将光标从所在位置移到当前行首

$ 将光标从所在位置移到当前行尾

n<enter> n为数字,将光标从当前行向下移动n行

ngg 移动到文件的第n行

上下左右方向键

/string 向下搜索

?string 向上搜索

n

N

yy 复制光标所在行

nyy 复制光标开始向下n行

p/P 粘贴

dd 删除光标所在行

ndd

u 恢复前一个执行过的动作

x 向后删除字符

X 向前删除字符

d1G 删除当前行至第一行

dG 删除当前行至最后一行

d0 删除当前光标文本至行首

d$ 删除当前光标文件至行尾

i o r a esc

:wq

:wq!

:q!

:set nu

:set nonu

:n1,n2s/A/B/gc 在n1行和n2行之间寻找A,用B替换

:%s/A/B/g 把符合A的内容全部替换为B,斜线为分隔符

0

精彩评论

暂无评论...
验证码 换一张
取 消