首页 > 系统相关 >Linux下文本处理三剑客:grep、sed 和 awk

Linux下文本处理三剑客:grep、sed 和 awk

时间:2023-05-25 21:23:39浏览次数:47  
标签:grep 文本处理 sed awk new txt hello 三剑客

grep

grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是 Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

grep [option] pattern file
cat a.txt | grep "hello"
grep "hello" a.txt b.txt
grep -v "hello" a.txt # 显示不被pattern匹配到的行
grep -i "hello" a.txt # 忽略大小写
grep -f a.txt a.txt # 将a.txt文件中的内容当做pattern
ps -ef | grep -v grep | grep hadoop # 过滤出hadoop进程

sed

sed 命令的作用是利用脚本来处理文本文件

sed [-hnV][-e<script>][-f<script文件>][文本文件]
  • a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  • c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  • d:删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
  • i:插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  • p:打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  • s:取代,通常这个 s 的动作可以搭配正规表示法,例如 1,20s/old/new/g 。
sed "2i\this is a new line" a.txt # 在第2行的上一行插入this is a new line
sed "2a\this is a new line" a.txt # 在第2行的下一行插入this is a new line
sed "2d" a.txt # 删除第2行
sed "/hello/c\HELLO" a.txt b.txt # 将hello替换为HELLO
sed "s/hello/HELLO/g" a.txt b.txt # 将hello替换为HELLO /g表示替换一行中的所有匹配

新增和删除不能操作多个文件,替换可以。上面的命令只是将文字处理了,并没有写入到文件中

sed -i "2i\this is a new line" a.txt # 在第2行的上一行插入this is a new line,并写入到文件中
sed "2i\this is a new line" a.txt > a.txt # 不能使用这种,会将a.txt内容置空,具体原因未知

awk

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

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

原文件内容

hello world
hello world
world hello
awk '{print $1}' a.txt # 打印第1个单词 默认使用空格或tab键分割
awk -F '[ ,]' '{print $1}' a.txt # 使用空格和,分割
awk '/hello/' a.txt # 匹配包含hello的行 类似grep的功能
awk '$0 !~ /hello/' a.txt # 匹配不包含hello的行 $0表示整行
awk '{print $NF}' a.txt # NF表示最后一个单词
awk '{print FS,FILENAME}' a.txt # FS->分隔符 FILENAME->文件名
awk '{print toupper($0)}' a.txt # 转大写

注意,要使用单引号,不能使用双引号,具体原因未知。

参考

Linux 文本处理三剑客:grep、sed 和 awk

标签:grep,文本处理,sed,awk,new,txt,hello,三剑客
From: https://www.cnblogs.com/strongmore/p/17432964.html

相关文章

  • grep -A -B -C使用介绍
    grep-A显示匹配指定内容及之后的n行grep-B 显示匹配指定内容及之前的n行grep-C 显示匹配指定内容及其前后各n行 grep-A5nametest.txt搜索匹配test.txt文件中与”name”字符串匹配的行,并显示其后的5行......
  • shell函数和三剑客
    函数基本语法#写法一:function函数名(){函数要执行的命令}#写法二,省略():function函数名{函数要执行的命令}#写法三,省略function:函数名(){函数要执行的命令}#调用函数#没有参数的函数函数名#有参数的函数函数名参数一参数二函数的......
  • Linux三剑客(grep/awk/sed)及正则表达式
    Linux给人的印象是黑乎乎的神秘窗口,文本操作和数据处理似乎没有Windows窗口界面直观方便。其实Linux有自己的独特的法宝,称之为三剑客:grep,awk和sed。你可以用这三件法宝很方便的处理数据:查找,分段,修改。正则表达式要想对文本和数据进行操作,一定离不开正则表达式,本文首......
  • Linux 使用grep过滤字符串中的指定内容
    命令示例:echoport1234123|grep-oP'port\s+\K\d+'返回:1234这条命令使用grep工具来在文本中查找"Port"后面跟着一个或多个空格的数字,并使用-oP标志来仅显示匹配的数字而不是整个行。其中\K是一个正则表达式的零宽度断言,表示从此处开始匹配,但不包括前面的字符......
  • 简单的文本处理工具
    今天我来分享一下我最近编写的一个代码,这个代码是基于Python的。它是一个简单的文本处理工具,可以用来查找和替换文本中的特定内容。首先,我需要说明一下这个代码的基本思路。这个工具主要是使用Python的正则表达式功能来查找和替换文本内容。在Python中,可以使用re模块来进行正则表达......
  • [文本处理] 将查询到相邻两行合并为一行
    oracleRedoLog文件名dbname_lgwr_25049.trc文件格式如下:***SESSIONID3289.1)2018-02-1817:31:03.615Maximumredogenerationrecordsize=154624bytesMaximumredogenerationchangevectorsize=150680bytes***2018-02-1821:30:02.349Warning:logwritet......
  • linux grep 查找文件中关键字
    grep[选项]{关键字}文件名选项:-i:忽略大小写-n:输出关键字行号-v:取反,不输出包含关键字内容-r:递归查找,用于查找多个文件是否包含某个关键字-E:使用正则表达式查找file.txt文件中匹配关键字的-所有行grep"关键字1"file.txt查找file.txt文件中匹配多个关键字......
  • Linux基础21 进程介绍, 进程监控状态ps, 进程相关命令pstree,pgrep,pidof, 动态进程监
    1.进程的管理:当我们运行一个程序,那么我们将该程序叫进程 进程线程协程 linux起服务会有给这个服务预分配的内存结构,windows没有 2.为什么要学进程管理?为了管理架构的服务 3.程序和进程的区别1)程序:开发写出来的代码,程序是永久存在的。 2)进程:它会随着程序的终止而销......
  • 如何查看CUDNN版本号,如果cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_
    https://github.com/pjreddie/darknet/issues/2356#issuecomment-756701965请看这个issuesudocpcuda/include/cudnn*.h/usr/local/cuda/includesudocpcuda/lib64/libcudnn*/usr/local/cuda/lib64sudochmoda+r/usr/local/cuda/include/cudnn.h/usr/local/cuda/......
  • 查找命令 (which 、 find )----grep 、 wc 和管道符,echo ,反引号 `
    which命令通过which命令,查看所使用的一系列命令的程序文件存放在哪里find命令按文件大小查找文件语法:find 起始路径 -size 【(+,-)k,m,g  】•+、-表示大于和小于•n表示大小数字•kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB•用于查找指定的文件findfind ......