300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > linux三剑客(awk grep sed)

linux三剑客(awk grep sed)

时间:2021-01-12 08:56:09

相关推荐

linux三剑客(awk grep sed)

简介

linux三剑客是指在linux操作系统中非常重要的三个命令,即awk,grep,sed这三个命令。它们都具有优秀的处理文件的功能。

①awk:多用于取列。

②grep:多用于查找或匹配文本。

③sed:多用于替换和取行。

正则表达式

在使用linux三剑客前,我们还需要了解一下正则表达式,因为linux三剑客可以根据正则表达式来查找和匹配文本。正则表达式由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义,以下仅列出一部分常用的元字符。

grep命令

grep能全面搜索正则表达式并把行打印出来,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。因此grep更适合单纯的查找或匹配文本。其用法如下:

grep [选项]... Pattern [file]...

grep选项有很多,以下仅列出一部分,想要了解更多选项可以通过grep --help命令进行查询了解。

grep --help

lgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ vim test.txt Correct:1332211000115866666668Wrong:11112345678123####查找以w开头的所有行(忽略大小写),并显示行号lgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ grep '^w' test.txt -i -n4:Wrong:####查找正确的手机号lgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ grep -E '^1[3-9][0-9]{9}' test.txt 1332211000115866666668

awk命令

awk 是一种处理文本文件的语言,是一个强大的文本分析工具。相较于另两个命令,awk 更适合格式化文本,对文本进行较复杂格式处理。awk语法如下:

awk [选项] [Program] [file]

awk选项:

lgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ vim salary.txtID | name | working_days | leaving_days | salary_perday | wages_intotal1 | zhangsan |29|2 |100|29002 | lisi|31|0 |100|31003 | wangwu |25|6 |200|50004 | zhaoliu |28|3 |150|4 | guaner |30|1 |100|3000####使用-F指定|为分隔符lgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ awk -F "|" '{print $2,$3,$4,$5,$6}' salary.txt nameworking_days leaving_days salary_perday wages_intotalzhangsan 29 2100 2900lisi 31 0100 3100wangwu25 6200 5000zhaoliu 28 3150 4200guaner30 1100 3000

awk变量:

####输出zhangsan所在行lgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ awk '/zhangsan/{print $0}' salary.txt 1 | zhangsan |29|2 |100|2900####输出第二行和第三行lgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ awk 'NR>1&&NR<=3{print $0}' salary.txt 1 | zhangsan |29|2 |100|29002 | lisi|31|0 |100|3100####指定输入字段分隔符为'|',输出字段分隔符为'~',并输出第二列和最后两列lgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ awk -v FS='|' -v OFS='~' '{print $2,$(NF-1),$(NF)}' salary.txt name ~ salary_perday ~ wages_intotalzhangsan ~100~2900lisi~100~3100wangwu ~200~5000zhaoliu ~150~4200guaner ~100~3000

sed命令

sed是一种流编辑器,它一次仅处理一行。处理时,把当前处理的行存储在临时缓冲区中,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。因此sed更适合编辑匹配到的文本。sed命令语法如下:

sed [选项] [script] [file]

sed选项

sed处理动作

lgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ vim test_sedThis Is a Test For SED!What is sed?sed is a great GUN.####a和i动作的区别lgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ sed -e '1a\it is a new line!' test_sed This Is a Test For SED!it is a new line!What is sed?sed is a great GUN.lgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ sed -e '1i\it is a new line!' test_sed it is a new line!This Is a Test For SED!What is sed?sed is a great GUN.####修改第一行lgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ sed '1c\changed!!!' test_sed changed!!!What is sed?sed is a great GUN.####删除第二行lgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ sed '2d' test_sed This Is a Test For SED!sed is a great GUN.####将sed替换为command_sedlgs@lgs-virtual-machine:~/Desktop/study/test/new_test$ sed 's\sed\command_sed\' test_sed This Is a Test For SED!What is command_sed?command_sed is a great GUN.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。