首页
学习
活动
专区
圈层
工具
发布

Linux的文本处理工具浅谈-awk sed grep

Linux的文本处理工具浅谈 awk 老大 【功能说明】 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切...替换只发生在第一次匹配的 时候 gsub 整个文档中进行匹配 index 返回子字符串第一次被匹配的位置,偏移量从位置1开始 substr 返回从位置1开始的子字符串...#指令放在文件里 sed-command a 追加 i 插入 d 删除 c 替换指定的行 s 替换每一行匹配到的第一个字符 g 替换每一行的全部 p 输出 w...'2c 106,dandan,CSO' person.txt #替换第2行的内容 文本替换 s:单独使用,将每一行中第一处匹配的字符串进行替换 g:每一行进行全部替换 -i:修改文件内容...例:echo I am oldboy teacher.如果想保留这一行的单词oldboy,删除剩下的部分,使用圆括号标记想保留的部分。 echo I am oldboy teacher.

4.1K41

Linux(八)

Irish,Google # 寻找包含 Paul 的行 $sed -n '/Paul/p' source.txt # 103,Paul Irish,Google # 从第一行开始到第五行, 从找到开始打印到第五行...,Github # 从匹配 Paul 行打印达匹配 Addy 的行 $sed -n '/Paul/,/Addy/p' source.txt # 103,Paul Irish,Google # 104,...如果想支持扩展正则,需要使用 -r 选项 $ 代表最后一行行号 删除 格式与查找相同: sed [options] {sed-commands} {input-file} 例如: # 删除所有行 $sed...d' source.txt # 删除评论行 $sed '/^#/d' source.txt 注意: 删除并不会影响源文件,如果也想修改源文件,可以使用 -i 参数或重定向 Mac 下需要使用 -i...awk awk 是贝尔实验室 1977 年开发的用于处理文本文件的一个应用程序,它依次处理文件的每一行,并读取里面的每一个字段。

1.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Shell实用工具

    命令: 删除第1行,第4行数据 sed '1d;4d' sed.txt ? 演示2: 删除奇数行 从第一行开始删除,每隔2行就删掉一行。...演示3: 删除指定范围的多行数据 删除从第1行到第3行的数据 sed '1,3d' sed.txt # 1,3 从指定第1行开始到第3行结束 ?...演示3: 删除指定范围取反的多行数据 删除从第1行到第3行取反的数据 sed '1,3!d' sed.txt # 1,3! 从指定第1行开始到第3行结束取反, 就是不在这个范围的行 ?...演示3: 第一行数据复制粘贴替换其他行数据 将模式空间第一行复制到暂存空间(覆盖方式), 最后将暂存空间的内容复制到模式空间中替换从第2行开始到最后一行的每一行数据(覆盖方式) sed '1h;2,$g...sort -t " " -k2n,2 sort.txt # -t " " 代表使用空格分隔符拆分列 # -k2n,2 代表根据从第2列开始到第2列结束进行数字升序, 仅对第2列排序 ?

    9.4K10

    【Linux】三剑客 grep、awk、sed 常见用法

    如果您有其他想要了解的,欢迎私信联系我~ grep、awk、sed 都是 Linux 命令行工具,通常用于处理文本数据,俗称“Linux 三剑客“。...-n # 仅显示经过编辑的行 -r # 支持扩展正则匹配 # 使用技巧 只要编辑文件,就使用参数 i 只要用到动作 p,就使用参数 n 4、使用示例...(第 1~5 行) sed -i "1,5d" demo.txt ---------------------------------------------------- # 删除匹配的行 sed -i...#"${new}"#g' demo.txt 将字符串替换为对应的变量,需要使用「双引号」 "(双引号):保留 $ 引用 '(单引号):关闭所有引用 查找、打印内容 # 打印指定的行(第 1~5 行)...--------------------------------- # 从指定行开始,每 3 行删除一行 sed -i "1~3d" demo.txt -------------------------

    2K21

    Linux进阶 03 文本处理三驾马车

    常见参数-w:word 精确查找某个关键词 pattern-c:统计匹配成功的行的数量-v:反向选择,即输出没有匹配的行-n:显示匹配成功的行所在的行号-r:从目录中查找pattern-e:指定多个匹配模式...4行2,$:第2行到最后一行2~3:从第2行开始,每隔3行取一行 第2、5、8行2,+4:从第2行到第2+4行/pattern/:匹配上pattern的行!...表示除了第2行2.5 常见command内容图片ript' command:增删改查a:append,在指定行的后面增加一行i:insert,在指定行的前面增加一行d:delete,删除某一行或某几行,...y:转换,实现字符一对一转换'y/abc/ABC/'p:print,把匹配或修改过的行打印出来,通常与-n参数合用删除第一行常用 第一行往往为标题行三驾马车中都使用单引号!...Data/example.gtf文件匹配feature为exon的行每一行第5列➖第4列即为exon的长度int只取整,如何进行四舍五入?+0.5

    1.1K20

    文本_bash笔记4

    ,得到`想` echo "想做个好人" | cut -n -b 2-4 sed stream editor,非交互式的编辑器,常用的文本处理工具,最常用的功能是文本替换: # 删除行开头的空白字符 echo...一般定界符是/,也可以是任意符号: # 分号 echo $'\t\t\t我想左对齐' | sed $'s;^\t*;;' # Mac下甚至可以是`|` echo $'\t\t\t我想左对齐' | sed...$'s|^\t*||' # 没有分界含义的定界符需要转义 echo '&c' | sed -E 's;&[[:alpha:]]{1,}\;;\&;' 其它常用选项: # /pattern/d删除匹配的行...{ command } END{ print "end" }' file BEGIN、END和模式块都是可选的,先执行BEGIN块,然后从输入内容中读取一行,依次执行各个模式块,直到所有内容读取完毕,然后执行...:当前行文本内容 $123…:当前行第n个字段的文本内容 所以有更简单的统计行数的方式: echo $'1 2\n3 4' | awk 'END{print NR}' 每读一行更新NR,执行到END块时就是总行数

    1.1K30

    sort命令详解及Nginx统计运用

    ,不输出内容,仅返回1 -M会以月份来排序,比如JAN小于FEB等等 -b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。...FStart.CStart,其中FStart就是表示使用的域,而CStart则表示在FStart域中从第几个字符开始算“排序首字符”。...(如果你问“我使用-k 1.2怎么不行?”,当然不行,因为你省略了End部分,这就意味着你将对从第二个字母起到本域最后一个字符为止的字符串进行排序)。...这里设置了两层排序优先级的情况下,使用-u就没有删除任何行。...最最重要的一点是,这种方式方法是从0开始计数的,以前所说的第一个域,在此被表示为第0个域。以前的第2个字符,在此表示为第1个字符。明白?)

    1.6K10

    Linux基础——正则表达式

    如果需要对同一文件或行作多次修改,可以使用"-e" 选项 ? 取得eth0 网卡 IP 地址: ? 2、删除行:d命令 从某文件中删除包含 "how" 的所有行 ?...nl 可以将输出的文件内容自动的加上行号如果只要删除第 2行,可以使用 nl/etc/passwd|sed '2d' 来达成,至于若是要删除第 3到最后一行, 则是 nl/etc/passwd |sed...在 awk 中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F 域分隔符的情况下,默认的域分隔符是空格或 tab 键。...如果只是显示/etc/passwd 文件中的用户名和登录shell, 而账户与 shell 之间以逗号分割 ? 注:awk 的总是输出到标准输出,如果想让 awk 输出到文件,可以使用重定向。...,填充域,$0则表示所有域,$1表示第一个域,$n 表示第n个域,随后开始执行模式所对应的动作。

    5.8K30

    搞定Linux Shell文本处理工具,看完这篇集锦就够了

    下面我介绍Linux下使用Shell处理文本时最常用的工具: find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk; 提供的例子和参数都是最常用和最为实用的...; 我对shell脚本使用的原则是命令单行书写,尽量不要超过2行; 如果有更为复杂的任务需求,还是考虑python吧; 1、find 文件查找 查找txt和pdf文件 find . \( -name...: cat -f2 -d";" filename cut 取的范围 N- 第N个字段到结尾 -M 第1个字段为M N-M N到M个字段 cut 取的单位 -b 以字节为单位 -c 以字符为单位 -f...; $2:第二个字段的文本内容; echo -e "line1 f2 f3\n line2 \n line 3" | awk '{print NR":"$0"-"$1"-"$2}' 打印每一行的第二和第三个字段...: awk '{print $2, $3}' file 统计文件的行数: awk ' END {print NR}' file 累加每一行的第一个字段: echo -e "1\n 2\n 3

    7.3K41

    shell文本处理工具sed、cut、awk

    (即加在第二行) 加上drink tea nl testfile | sed '2i drink tea' 第二行后面加入两行字 使用\可以一次加多行,每一行之间都必须要以反斜杠 \ 来进行新行标记...n和p 一般是一起使用 -n选项:只显示匹配处理的行(否则会输出所有)(也就是关闭默认的输出) -p选项:打印 [root@centos6 ~]# vim a.txt [root@centos6...cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。...PATH 变量值,第 2 个“:”开始后的所有路径: [admin@ datas]$ echo $PATH | cut -d : -f 2- 选取系统 PATH 变量值,第 4 列(包括第 4 列...第2列:"$2}' /tmp/hosts 正则 awk 可以使用正则 搜索 passwd 文件,以:分隔,输出以 a 字母开头的所有行 [admin@ datas]$ awk -F ':' '/

    1K20

    linux文本处理三剑客之awk

    $3,$4,$5,$6,$1}' 文件名 4.3行与列 名词 awk中叫法 一些说明 行 记录record 每一行默认通过回车分割 列 字段域field 每一列默认通过空格分割 awk中行和列结束标记都是可以修改的...#找出 第3列以2开头的行,并显示第1,3和最后一列 ​找出 第3列以1或2开头的行,并显示第1列,第3列和最后一列 ​还有这几种写法 ​3)表示范围 /哪里开始/,/哪里结束/ 常用...NR==1,NR==5 从第1行开始到第5行结束 类似于sed -n '1,5p' #显示指定时间(11:02:00到11:02:30)范围内容的ip地址和用户访问uri column -t(...数组专用循环,变量获取到的是数组的下标 #awk中字母 会被识别为变量,如果只是想使用字符串需要使用双引号引起来 awk 'BEGIN{a[0]=oldboy;a[1]=liao; print...%]+" 'NR>1{if($5>=1)print "disk not enough",$1,$5,$NF}' 注意:awk使用多个条件的时候 第1个条件可以放在 ‘条件{动作}’ 第2个条件 一般使用

    1.1K00

    Linux Shell 文本处理工具集锦

    我对shell脚本使用的原则是命令单行书写,尽量不要超过2行; 如果有更为复杂的任务需求,还是考虑python吧; find 文件查找 查找txt和pdf文件 find . \( -name "*.txt...3列的所有列: cut -f3 --complement filename -d 指定定界符: cat -f2 -d";" filename cut 取的范围 N- 第N个字段到结尾 -M 第1个字段为...; $2:第二个字段的文本内容; echo -e "line1 f2 f3\n line2 \n line 3" | awk '{print NR":"$0"-"$1"-"$2}' 打印每一行的第二和第三个字段...: awk '{print $2, $3}' file 统计文件的行数: awk ' END {print NR}' file 累加每一行的第一个字段: echo -e "1\n 2\n 3\n 4\n...eg: seq 10 | awk '{printf "->%4s\n", $1}' 迭代文件中的行、单词和字符 迭代文件中的每一行 while 循环法 while read line; do echo

    4K70

    很简单的文件夹里面的全部文本内容合并编程需求但ai给的代码都是错的?

    我对它定量就首先需要对fq文件进行质量控制,然后比对成为bam文件,这两个步骤都会翻倍的磁盘消耗。但是我磁盘是有限的,所以只能说是每个样品独立的定量流程然后删除中间的fq和bam文件。...最开始ai给我的是少量文件的解决方案 要使用shell命令从当前文件夹中的所有.txt文件中提取第7列并将它们组成一个矩阵输出,你可以使用awk命令。...{for(i=1;in"}:对于每个文件,遍历每一行的每个字段。如果字段编号为7(即第7列),则打印该字段。...-表示从标准输入读取数据,这里使用了五个-,因为awk命令会为每个文件输出一行。 请注意,这个命令假设你的文本文件的列数至少为7列。如果某些文件的列数少于7列,awk命令将不会打印任何内容。...使用shell代码 要实现这个需求,你可以使用 awk命令来处理文本文件,将每5行的内容合并成一行,形成5列。以下是一个示例的shell命令: awk '{a[NR%5]=NR==1?

    31210

    shell脚本扩展「建议收藏」

    如果需要对同一文件或行作多次修改,可以使用 “-e” 选项 2.删除行:d命令 将/etc/passwd的内容显示并找印行号,同时将2~5删除 附:nl命令在linux系统中用来计算文件中行号。...nl 可以将输出的文件内容自动的加上行号 如果只要删除第2行,可以使用nl /etc/passwd | sed ‘2d’ 来达成,至于若是要删除第 3 到最后一行,则是nl /etc/passwd |...iput_files可以是多于一个文件的文件列表,awk将按顺序处理列表中的每个文件。 在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。...awk执行时,其浏览域标记为1,2… 使用1 , 3表示参照第1和第3域,注意这里用逗号做域分隔。.../passwd文件中的用户名和登录shell, 而账户与shell之间以逗号分割 注:awk的总是输出到标准输出,如果想让awk输出到文件,可以使用重定向。

    6.7K20

    生信人的自我修养:Linux 命令速查手册(全文引用)

    1行,显示从第2行开始的所有行,可用于跳过文件的标题行 tail -f file # 当文件的内容还在增加时,实时显示末尾增加的内容,常用于查看日志文件的更新情况 wc - 统计文件内容 wc -l file...将file的内容显示成一行 cat file | xargs -n3 # 将file的内容每3列一行进行输出 find /ifs/result -name '*.fq.gz' | xargs -n1 -...sed -n '10p' file # 显示第10行 sed -n '10,20p' file # 显示第10到20之间的行 sed -n '/pattern/p' file# 显示含有pattern...的行 sed -n '/pattern1/,/pattern2/p' file # 显示patter1与pattern2之间的行 sed '10d' file # 删除第10行 sed '10,20d...' file # 删除第10到20之间的行 sed '/pattern/d' # 删除匹配pattern的行 sed '/^\s*$/d' file # 删除空白行 sed 's/^\s*//'

    4.8K40

    《Linux操作系统编程》第九章 数据查找和筛选工具 : 了解流编辑器sed和报表生成器awk的简单使用

    sed -n ‘22, 35p’ file1 ​ 打印file1的第22~35行 sed -n ‘/string/p’ file2 ​ 打印file2中包含string的行 sed -n ‘9, /...^uestc/p’ file3 ​ 打印file3中第9行到以uestc开头的行 sed -n ‘/[Cc]hina/p’ file4 ​ 打印file4中包含China或china的行 删除文件内容...: d命令 sed ‘76d’ file5 ​ 删除file5中的第76行 sed ‘9,$d’ file6 ​ 删除file6中第8行以后的所有行 sed ‘/co*ool/d’ file7 ​...(2) awk的基本格式 awk ‘pattern {action}’ filename awk扫描filename中的每一行, 对符合模式pattern的行执行操作action (3) 数据文件中记录和域的标识.... ▪ awk运行时, 对输入文件中的每一行执行命令文件中的所有操作后, 再对下一行数据进行同样的处理过程, 以此类推, 直到输入文件中的最后一行。

    44510
    领券