文本处理三驾马车之 sed

2024-03-01 17:29:08 浏览数 (3)

sed 是 stream editor 的缩写,中文称之为“流编辑器”。

代码语言:javascript复制
sed command file
  • command 部分,针对每行要进行的处理
  • file,要处理的文件

Actions

  • d:删除该行
  • p:打印该行
  • i:在行的前面插入新行
  • a:在行的后面插入新行
  • r:读取指定文件的内容。
  • w:写入指定文件。
代码语言:javascript复制
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*//' file		# 删除行前的空白:空格,制表符
sed 's/s*$//' file		# 删除行尾的空白:空格,制表符
sed 's/^s*//;s/s*$//' file    # 删除行首和行尾的空白:空格,制表符

sed 's/AA/BB/' file	# 将文件中的AA替换成BB,只替换一行中第一次出现的AA,替换后的结果输出到屏幕
sed 's/AA/BB/g' file	# 将文件中的所有AA都替换成BB,替换后的结果输出到屏幕
sed -i 's/AA/BB/g' file # 将文件中的所有AA都替换成BB,直接更改文件的内容
sed '/CC/s/AA/BB/g' file# 只替换那些含有CC的行
sed 's/pattern/&XXXX/' file	# 在pattern之后加上XXXX。&表示之前被匹配的内容
sed 's/pattern.*/&XXXX' file    # 在匹配pattern的行尾加上XXXX。pattern.*表示包含pattern的整行内容

sed -n '1~4s/^@/>/p;2~4p' file.fq > file.fa	# Fastq文件转Fasta文件
sed -n '2~4p' file.fq		# 提取Fastq文件的序列

sed 'y/ABC/XYZ/' file	        # 将ABC逐字替换成XYZ

sed '1ihello' file		# 在第1行前面插入一行,内容为hello,通常用来为文件增加标题
sed '1ahello' file		# 在第1行后面插入一行,内容为hello
sed '1r file2' file1	        # 在第1行后面读入file2的内容
sed '/pattern/w file2' file1    # 将匹配的行写入file2中

0 人点赞