乐趣区

关于程序员:Linux三剑客grepsedawk基础入门学习笔记

明天分享的学习笔记内容是 Linux 三剑客,包含 grep、sed、awk 命令的基础知识,以及一些正则表达式相干内容。

正则表达式是对字符串和特殊字符操作的一种逻辑公式,就是用当时定义好的一些特定字符及这些特定字符的组合,组成一个“规定字符串”,这个“规定字符串”用来表白对字符串的一种过滤逻辑。

正则表达式应用单个字符串来形容、匹配一系列匹配某个句法规定的字符串,通常被用来检索、替换那些合乎某个规定的文本,sed、awk、grep命令可能实现这种性能。


文本搜寻 grep 函数

grep 是一个文本搜寻工具,反对正则表达式,可能把匹配的行显示进去。egrep 是扩大版反对更多元字符,笔记里提到的为 grep。语法格局如下:

grep '条件' file.name -x(参数)

命令常见参数选项(-x):

  • i:疏忽大小写
  • v:输入反转后果
  • x:准确匹配整行内容
  • -color:高亮显示匹配行
  • n:输入同时显示行号
  • c:计算合乎款式的行数
  • q:不显示任何信息

简略示例

grep '^abc' xx.txt
输入以 abc 结尾的行
grep '[0-9]' xx.txt
输入蕴含数字的行
grep '^$' xx.txt
输入空行
grep 'xyz$' xx.txt
输入以 xyz 结尾的行
grep 'a*c' xx.txt
输入 a 结尾 c 结尾的行

文本处理 awk 函数

awk 最根本的性能是基于指定规定浏览和抽取信息,awk 抽取信息后,能力进行其余文本操作,残缺的 awk 脚本通常用来格式化文本文件中的信息。通常,awk 是以文件的一行为解决单位。语法格局如下:

awk '{pattern + action}'{filenames}
awk 'BEGIN{OFS=FS="\t"}{print $0, $1;}' filename
awk 'BEGIN{OFS=FS="\t"}ARGIND==1{print $0, $1;}ARGIND==2{print $0;}' file1 file2

awk 运算符:

awk 内置变量:

常见参数解释

  • OFS: 输入时列分隔符
  • FS:输出时列分隔符
  • $0: 第一行
  • $1\$2\$NF: 第一列、第二列、最初一列
  • NF: 总列数
  • NR:总行数
  • FNR:以后读取了多少行
  • F:指定分隔符

    实例演示

  • 输入 20 到 30 行的内容

    awk '{if(NR>=20 && NR<=30) print $1}' test.txt

    文本替换 sed 函数

    sed 一次解决一行内容。解决时,把以后解决的行存储在长期缓冲区中,接着用 sed 命令解决缓冲区中的内容,解决实现后,把缓冲区的内容送往屏幕。而后读入上行,执行下一个循环。这样一直反复,直到文件开端。

  • 语法格局 为:

    sed [-nefri 等参数]‘command’输出文本 
    sed -i 's/ 被替换的内容 / 要替换成的内容 /' file
    sed 's/ 被替换的内容 / 要替换成的内容 /g' file > file.out
    • n∶宁静模式。只有通过 sed 非凡解决的那一行才会被列出来。
    • e∶间接在指令列模式上进行 sed 的动作编辑;
  • f∶间接将 sed 的动作写在一个档案内,
  • r∶sed 延长型正则表示法的语法。(预设是根底正则表示法语法)
  • i∶间接批改读取的档案内容,而不是输入。

    实例展现

删除文件第 3 行
sed '3d' xxx.txt
删除文件最初一行
sed "$d" xxx.txt
删除空格
sed’s/^[ ]*//g’xxx.txt
替换:把 test 替换为 mytest。如果没有 g 标记,则只有每行第一个匹配的 test 被替换成 mytest。sed 's/test/mytest/g' xxx.txt
增加新行(向前)sed‘s/pattern/&\n/g’filename
在最初一行插入字符
sed -i‘$ a\ 插入字符串’filename

参考资料
https://www.cnblogs.com/ginvi…
https://baike.baidu.com/item/…
http://www.ehbio.com/Bioinfo_…

本文由 mdnice 多平台公布

退出移动版