美文网首页
Linux学习4 sed和awk

Linux学习4 sed和awk

作者: 八段锦1134 | 来源:发表于2021-01-01 00:02 被阅读0次

Linux下常识

  • \t 制表符(Tab键)
  • \n 换行符(Enter键)
  • Backspace键不起作用时,可以Ctrl+Backspace
  • 成对的符号最好成对先打然后再打里面的内容,比如‘’,"",()
  • --help 调用帮助文档
  • 软链接文档应该是浅蓝色,红色就有问题(前提是之前修改过命令行配色)

sed

sed [-option] 'script' file
option参数用的较少,其中-e是执行多个命令。主要设置就是script参数的操作:
script包含3部分:[address][!]command
address是指出操作的位置:
2 表示第2行
2,4 表示第2-4行
2,$ 表示第2到最后一行
2 ~3 表示从第2行开始,每隔3行取一行
/pattern/ 表示能匹配上pattern的行
[!] 表示取反
command是怎么操作:
a 指定位置后增加一行,内容为a后面的字符串
i 指定位置前增加一行,内容为i后面的字符串
d 删除某几行
c 修改一整行的内容
s/old/new/[flags] 把整个old内容用new内容替换(///可以换成###,---等等),且默认只替换第一个,要全部替换要用g
y/ATCG/TAGC/ 把ATCG的每个字符一一对应的替换为TAGC,所以可以用来取反向互补链

sed练习:

先看原图: cat readme.txt


图片.png

要增加一行内容: cat readme.txt |sed '1a welcome to a new world'


图片.png

要在每行前都增加一行相同的内容:cat readme.txt |sed '1,3i welcome to a new world'


图片.png
要把某几行用相同的内容替换掉:cat readme.txt |sed -e '1,3i welcome to a new world' -e '1,3d'
图片.png

要把整个文章里的某些单词替换成另外的单词:cat readme.txt | sed 's/to/TO/g'


图片.png
猜一猜:cat readme.txt | sed '/^$/d'是啥意思?
图片.png

awk是一个编程语言

既可以像grep和sed一样对文本处理,也可以对数据进行处理,可以配合if等语句一起使用,强大!
1、最基本结构:awk [option] '{script}' file
2、复杂一点的结构:awk [option] '/pattern/{script}' file
3、再复杂一点的结构:awk [option] 'BEGIN{script}{script}END{script}' file
工作原理:awk在处理每一行文本时,是首先对文本进行字段切割,然后按字段逐一进行读取,默认的字段分隔符是空格或制表符。所以,$0代表整行文本,$1代表第一个字段,以此类推,$NF代表最后一个字段。(似曾相识啊,R语言里面也有类似的语法)

awk练习:

先上原数据:less -S example.gtf


图片.png

为了看清楚是换行符还是空格:cat -A example.gtf | less -S


图片.png

取第9-10列内容:

less -S example.gtf | awk '{print $9,$10}' | less -S
图片.png

想要自己指定分隔符,比如只要制表符:less -S example.gtf | awk -F '\t' '{print $9}' | less -S


图片.png

设置把符合筛选条件的行输出,则要用到if语句:

less -S example.gtf | awk  '{if($3 == "gene") print $0}' | less -S
图片.png

如果只是匹配gene的话,只要带有gene的字段就全都输出了:less -S example.gtf | awk '/gene/{print $0}' | less -S


图片.png

搜一搜是什么意思:

less -S example.gtf | awk  'BEGIN{FS="\t";OFS="\t"} {gsub("gene","Gene",$3);print $0}' |less -S
图片.png

相关文章

  • Linux 学习笔记(十四):Linux 正则表达式基础

    grep 命令 作为linux中最为常用的三大文本(awk(Linux awk教程),sed(Linux sed教...

  • Linux学习4 sed和awk

    Linux下常识 \t 制表符(Tab键) \n 换行符(Enter键) Backspace键不起作用时,可以Ct...

  • sed & awk & tr

    sed & awk & tr sed awk awk 是一种编程语言,用于在linux/unix下对文本和数据进行...

  • Linux命令学习之:awk命令

    Linux命令学习之:awk命令 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk...

  • awk实现类sql的join操作

    awk、grep和sed被称为linux三剑客,事实上grep和awk我在日常工作中也常用到(sed用的比较少),...

  • awk

    awk的简介和功能 awk: Linux 文本处理三剑客:grep、sed和awk。其中grep是一种文本过滤工具...

  • sed和awk学习总结

    sed和awk学习总结 一些说明 我测试例子都是在mac os x下,freebsd的sed和awk和gnu的都略...

  • Linux-grep、sed、awk之awk命令

    参考:Linux三剑客(grep sed awk) 之 awk[https://www.jianshu.com/p...

  • Linux三剑客

    Linux三剑客 标签(空格分隔): Linux grep sed awk [TOC] 在Linux系统当中,处理...

  • 语音合成算法工程师所需技能

    基础能力: 数学——良好的数学功底 机器学习 软件工程能力 数据结构 Linux——awk sed perl 精通...

网友评论

      本文标题:Linux学习4 sed和awk

      本文链接:https://www.haomeiwen.com/subject/omxdoktx.html