❀My学习Linux命令小记录(6)❀

目录

❀My学习Linux命令小记录(6)❀

26.ps指令

27.grep指令

28.awk指令

29.sed指令

30.wc指令


❀My学习Linux命令小记录(6)❀

26.ps指令

功能说明:报告当前系统的进程状态

(ps.ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。)

基本语法:ps(选项)

选项:

ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

-ef:显示系统中所有进程信息,包括系统进程用户进程。它会显示出每个进程的PID、PPID(父进程ID)、C(CPU使用率)、STIME(进程启动时间)、TTY(终端)、CMD(进程命令)等信息。通过这个参数我们可以快速了解系统正在运行的进程情况

-aux:这个参数遇上一个参数类似,也可以显示系统中的所有进程信息。但不同的是,它会显示出进程的用户信息,包括进程的所有者、所属组等。这个参数对于查找特定用户的进程非常有用

-l:显示进程的长格式信息。他会显示出进程的所有详细信息,包括进程的状态(S)、CPU占用率(%CPU)、内存占用率(%MEM)、优先级(PRI)、进程运行时间(TIME)等

-e:显示系统中正在运行的进程信息,但不包括僵尸进程(Zombie)。僵尸进程是指已经结束单父进程还没有处理的进程。使用这个参数可以过滤掉僵尸进程,使进程列表更加清晰

-u:显示指定用户的进程信息

-p:显示指定进程ID的进程信息

-A:列出所有的进程信息

-w:显示加宽可以显示较多的资讯

-C:显示指定命令的进程信息

实例:

#ps -u root    # 显示指定用户信息

#ps -aux    #显示所有包含其他使用者的进程

aux输出格式含义:

USER: 行程拥有者

PID: pid

%CPU: 占用的 CPU 使用率

%MEM: 占用的记忆体使用率

VSZ: 占用的虚拟记忆体大小

RSS: 占用的记忆体大小

TTY: 终端的次要装置号码 (minor device number of tty)

STAT: 该行程的状态:

D:  无法中断的休眠状态 (通常 IO 的进程)

R: 正在执行中

S: 静止状态

T: 暂停执行

Z: 不存在但暂时无法消除

W: 没有足够的记忆体分页可分配

<: 高优先序的行程

N: 低优先序的行程

L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)

START: 行程开始时间

TIME: 执行的时间

COMMAND:所执行的指令

#ps -ef    # 显示指定用户信息

#ps -l  #显示进程长格式信息

-l输出格式含义:

F代表这个程序的旗标 (flag), 4 代表使用者为 super user

S 代表这个程序的状态 (STAT)

UID 程序被该 UID 所拥有

PID 就是这个程序的 ID !

PPID 则是其上级父程序的ID

C CPU 使用的资源百分比

PRI 这个是 Priority (优先执行序) 的缩写

NI 这个是 Nice 值

ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"

SZ 使用掉的内存大小

WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作

TTY 登入者的终端机位置

TIME 使用掉的 CPU 时间

CMD 所下达的指令

27.grep指令

功能说明:强大的文本搜索工具

(ps.grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。)

基本语法:

grep [options] pattern [files]

grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

pattern:表示要查找的字符串或正则表达式。

files :表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。

选项:

-i忽略大小写进行匹配。

-v反向查找,只打印不匹配的行。

-n:显示匹配行的行号

-r递归查找子目录中的文件。

-l:只打印匹配的文件名

-c:只打印匹配的行数

规则表达式:

^    # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。    

$    # 锚定行的结束 如:'grep$' 匹配所有以grep结尾的行。

.    # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。    

*    # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。    

.*   # 一起用代表任意字符。   

[]   # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。    

[^]  # 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。    

\(..\)  # 标记匹配字符,如'\(love\)',love被标记为1。    

\<      # 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。    

\>      # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。    

x\{m\}  # 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。    

x\{m,\}   # 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。    

x\{m,n\}  # 重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。   

\w    # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。   

\W    # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。   

\b    # 单词锁定符,如: '\bgrep\b'只匹配grep。

更多参数说明: 

- -a 或 --text : 不要忽略二进制的数据。

- -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。

- -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。

- -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。

- -c 或 --count : 计算符合样式的列数。

- -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。

- -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

- -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。

- -E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。

- -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。

- -F 或 --fixed-regexp : 将样式视为固定字符串的列表。

- -G 或 --basic-regexp : 将样式视为普通的表示法来使用。

- -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。

- -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。

- -i 或 --ignore-case : 忽略字符大小写的差别。

- -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。

- -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。

- -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。

- -o[[ 或 --only-matching : 只显示匹配PATTERN 部分。

- -q 或 --quiet或--silent : 不显示任何信息。

- -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。

- -s 或 --no-messages : 不显示错误信息。

- -v 或 --invert-match : 显示不包含匹配文本的所有行。

- -V 或 --version : 显示版本信息。

- -w 或 --word-regexp : 只显示全字符合的列。

- -x --line-regexp : 只显示全列符合的列。

- -y : 此参数的效果和指定"-i"参数相同。

实例:

①在文件519.txt 中查找字符串 "hello":

#cat 519.txt | grep hello

#grep hello 519.txt 

②在文件夹moon中递归(-r)查找所有文件中匹配正则表达式 "happy" 的行,并打印匹配行所在的文件名和行号(-n)

#grep -r -n happy /root/moon/  

③在当前目录的519.txt文件中中查找字符串 "world",并只打印匹配的行数(-c)打印匹配行号(-n)的区别

#echo "hello world" ./519.txt | grep -c world 

#echo "hello world" ./519.txt | grep -n world 

④查找文件名(2.txt)中包含 update的文件中不包含update的行

#grep -v update 2.txt 

#ifconfig ens18 |grep -E "([0-9]{1,3}\.){3}" |awk '{print $2}'   #-E使用正则表达式提取出网卡的ip地址

grep -A 命令用于在文本文件中查找某个模式,并显示该模式后的指定行数。

具体来说,-A 选项后面可以跟一个数字 N,表示要显示匹配模式后的 N 行文本。例如:

# cat 11.txt |grep -A 2 "hello"

28.awk指令

功能说明:AWK 是一种处理文本文件的语言(取列),是一个强大的文本分析工具

(ps.awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。)

基本语法:

awk [选项参数] 'script' var=value file(s)

或awk [选项参数] -f scriptfile var=value file(s)

选项:

-F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:

-v var=value 赋值一个用户定义变量,将外部变量传递给awk

-f scripfile 从脚本文件中读取awk命令

-m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

模式可以是以下任意一个:

/正则表达式/:使用通配符的扩展集。

关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试。

模式匹配表达式:用运算符~(匹配)和!~(不匹配)。

BEGIN语句块、pattern语句块、END语句块:参见awk的工作原理

awk内置变量(预定义变量)

说明:[A][N][P][G]表示第一个支持变量的工具,[A]=awk、[N]=nawk、[P]=POSIXawk、[G]=gawk

 **$n**  当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段。

 **$0**  这个变量包含执行过程中当前行的文本内容。

[N]  **ARGC**  命令行参数的数目。

[G]  **ARGIND**  命令行中当前文件的位置(从0开始算)。

[N]  **ARGV**  包含命令行参数的数组。

[G]  **CONVFMT**  数字转换格式(默认值为%.6g)。

[P]  **ENVIRON**  环境变量关联数组。

[N]  **ERRNO**  最后一个系统错误的描述。

[G]  **FIELDWIDTHS**  字段宽度列表(用空格键分隔)。

[A]  **FILENAME**  当前输入文件的名。

[P]  **FNR**  同NR,但相对于当前文件。

[A]  **FS**  字段分隔符(默认是任何空格)

[G]  **IGNORECASE**  如果为真,则进行忽略大小写的匹配。

[A]  **NF**  表示字段数,在执行过程中对应于当前的字段数。

[A]  **NR**  表示记录数,在执行过程中对应于当前的行号。

[A]  **OFMT**  数字的输出格式(默认值是%.6g)。

[A]  **OFS**  输出字段分隔符(默认值是一个空格)。

[A]  **ORS**  输出记录分隔符(默认值是一个换行符)。

[A]  **RS**  记录分隔符(默认是一个换行符)。

[N]  **RSTART**  由match函数所匹配的字符串的第一个位置。

[N]  **RLENGTH**  由match函数所匹配的字符串的长度。

[N]  **SUBSEP**  数组下标分隔符(默认值是34)。

实例:

#awk '{print $1,$2,$5}' OFS=" $ "  log.txt  #指定字段分隔符$

用法一:

awk '{[pattern] action}' {filenames}   # 行匹配语句 awk ' ' 只能用单引号

实例:

#awk '{print $2,$4}' log.txt  # 每行按空格或TAB分割,输出文本中的2、4项

用法二:

实例:

#awk -F "," '{print $1,$3,$5}' pink.txt   # -F相当于内置变量FS,-F以","为字符分割符,打印1,3,5字段

#awk ' BEGIN{FS=","} {print $1,$3,$5}'  pink.txt   #或者使用内建变量,指定字段分隔符以","为字符分割符,打印1,3,5字段

用法三:

awk -v  # 设置变量

实例:

#awk -v a=1 '{print $1,$1+a}' log.txt   #-v设置变量a=1,打印第一个列的值,和第一列的值加1

#awk -v a=1 -v b=s '{print $1,$1+a,$1b}' log.txt  #-v设置变量a=1,b=s,打印第一列的值,和第一列的值加1以及第三列加上s

用法四:

awk -f {awk脚本} {文件名}

实例:

# awk -f cal.awk log.txt

使用正则字符串匹配

#awk ' /re/ ' log.txt  # 输出包含 "test'" 的行

#awk 'BEGIN{IGNORECASE=1} /update/' 2.txt  # 忽略大小写

awk脚本基本结构

awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file

一个awk脚本通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成,这三个部分是可选的。任意一个部分都可以不出现在脚本中,脚本通常是被 单引号 或 双引号 中,例如:

awk 'BEGIN{ i=0 } { i++ } END{ print i }' filename

awk "BEGIN{ i=0 } { i++ } END{ print i }" filename

awk的工作原理

awk 'BEGIN{ commands } pattern{ commands } END{ commands }'

    第一步:执行BEGIN{ commands }语句块中的语句;

    第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{ commands }语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到文件全部被读取完毕。

    第三步:当读至输入流末尾时,执行END{ commands }语句块。

BEGIN语句块 在awk开始从输入流中读取行 之前 被执行,这是一个可选的语句块,比如变量初始化、打印输出表格的表头等语句通常可以写在BEGIN语句块中。

END语句块 在awk从输入流中读取完所有的行 之后 即被执行,比如打印所有行的分析结果这类信息汇总都是在END语句块中完成,它也是一个可选语句块。

pattern语句块 中的通用命令是最重要的部分,它也是可选的。如果没有提供pattern语句块,则默认执行{ print },即打印每一个读取到的行,awk读取的每一行都会执行该语句块。

29.sed指令

功能说明功能强大的流式文本编辑器,利用脚本来处理文本文件。(替换和取行)。

(ps.sed 是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。)

基本语法:sed [-hnV][-e<script>][-f<script文件>][文本文件]

选项:

参数说明:

-e<script>或--expression=<script>   以选项中指定的script来处理输入的文本文件。

-f<script文件>或--file=<script文件>  以选项中指定的script文件来处理输入的文本文件。

-h或--help   显示帮助。

-i 直接修改文件内容。

-n或--quiet或--silent   静默输出,仅显示script处理后的结果。

-V或--version   显示版本信息。

动作说明:

a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)

c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行

d :删除,因为是删除,所以 d 后面通常不接任何东西

i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)

p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行

s :取代,可以直接进行取代的工作,通常这个s的动作可以搭配正则表达式!例如 1,20s/old/new/g

实例:

我们先创建一个测试文件5.txt,内容如下:

update again
update update update
UPDATE AGAIN
hello linux!
we all love to study.
happy living~
The toast taste so good!
I really enjoying this bread.
cake with coffee makes my day!
I LIKE YOU.

#sed -e 4a\newline 5.txt 在 testfile 文件的第四行(4)后添加(a)一行,并将结果输出到标准输出

#nl 5.txt | sed '2,5d'  #将 5.txt的内容列出并且列印行号,将第 2~5 行删除

查看某一文件内容并且列印行号用nl 文件名

sed 的动作为 2,5d,那个 d 删除的意思,因为删除了 2-5 行,所以显示的数据就没有 2-5 行了, 另外,原本应该是要下达 sed -e 才对,但没有 -e 也是可以的,同时也要注意的是, sed 后面接的动作,请务必以 '...' 两个单引号括住喔!

#nl 5.txt | sed '3,$d'    #要删除第 3 到最后一行

#nl 5.txt |sed '2a drink tea?'   #在第二行 加上drink tea?

#nl 5.txt |sed '2i drink tea?'   #在第二行加上drink tea?

#nl 5.txt| sed '2a Drink tea or......\

>drink beer?'    #要增加两行以上,在第二行后面加入两行字,例如 Drink tea or ......与 drink beer?

每一行之间都必须要以反斜杠 \ 来进行新行标记。上面的例子中,我们可以发现在第一行的最后面就有 \ 存在。

#nl 5.txt |sed '2,5c替换2-5行'  #将第 2-5 行的内容取代(c)成为 2-5行

#nl 5.txt |sed -n '2,5p'  #仅列出文件内的第2-5行,  -n静默输出,仅显示处理后的结果,打印p

#nl 5.txt | sed -n '/update/p'  #搜索文件中 有 update 关键字的行 ,-n静默输出,仅显示处理后的结果

#nl 5.txt |sed '/update/d'  #删除文件中 所有包含update的行,其他行输出

#sed -e 's/update/upgrade/g' 5.txt  #g 标识符表示全局查找替换,使 sed 对文件中所有符合的字符串都被替换,修改后内容会到标准输出,不会修改原文件

#sed -i 's/update/upgrade/g' 5.txt #选项 i 使 sed 修改文件

sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!

30.wc指令

功能说明统计文件的字节数、字数、行数

(ps.wc命令统计指定文件中的字节数、字数、行数,并将统计结果显示输出。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。wc同时也给出所指定文件的总统计数。)

语法:

wc(选项)(参数)

wc [选项]... [文件]...

wc [选项]... --files0-from=F

选项:

-c :统计字节数,或--bytes或——chars:只显示Bytes数

-l :统计行数,或——lines:只显示列数

-m : 统计字符数。这个标志不能与 -c 标志一起使用

-w :统计字数,或——words:只显示字数(单词数)。一个字被定义为由空白、跳格或换行字符分隔的字符串

-L :打印最长行的长度

-help  :显示帮助信息

--version : 显示版本信息

实例

在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。使用的命令为:

# wc 5.txt

-l)行数为10,(-w)单词数为35,(-c)字节数为198

# wc -l 5.txt

# wc -w 5.txt

# wc -c 5.txt

❀My学习Linux命令小记录(6)❀over~

  • 27
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值