cut
cut以行为处理单位,提取指定区域数据。
-
cut -bn <file>
,以字节(byte)为分割单位
-b list
打印出list中指定位置字节,制表符和空格符均为一个字节;
-n
对于多字节字符不进行分割,主要针对汉字(一个汉字三个字节)等多字节字符; -
cut -c <file>
,以字符(character)为分割单位
-c list
打印出list中指定位置字符,对于单字节字符同-b选项,对于多字节字符有区别; -
cut -df <file>
,以域(field)为分割单位
-f list
指定取出哪一列,默认以制表符作为分隔符;
-d byte
指定分隔符;
sed
stream editor,以行为单位,每处理完一行立即打印,再处理下一行。
-
sed [options] 'command' filename
options是指sed的命令行参数,sed从filename标准输入。如果操作比较复杂,为了简便,可以把命令写到script,然后-f参数调用。 -
sed -f sed_script filename
sed_script是指对输入执行的一个或多个命令,sed会依次读取输入文件的每一行操作指令并做相应处理.
3.d删除行
sed '2,4d' filename #删除第2到第4行
- s查找替换
sed 's/RNA/DNA/' filename #s默认只替换每一行第一次匹配到的内容
sed 's/RNA/DNA/n' filename #替换每一行第n个匹配值
sed 's/RNA/DNA/g' filename #利用g选项,表示全局匹配,替换所有能够匹配到的值
sed 's/RNA//g' filename #将RNA替换成空,即删除所有RNA
- y字符替换
sed 'y/RNA/WD/' filename #如果前后对应的字符数不一致则会报错。
sed 'y/RNA/WDY/' filename #将R替换成W,N替换成D,A替换成Y
sed 'y/01234/ABCDE/' filename #将0替换成A,将1替换成2……
- a/i插入命令
sed '3 i line' filename # i表示在3行之前插入
sed '3 a LINE' filename # a表示在3行之后插入
- n命令读取下一行,用下一个命令处理新的行
n命令是两行为一个单位进行处理的,其中第一行为匹配行而非处理行
sed '/1#/ {n; s/RNA/DNA/g}' filename
首先匹配1即第1行,然后替换命令处理下一行即第2行 - ;一次执行多个命令
sed 's/RNA/DNA/g; y/12345/ABCDE/' filename
- &保存搜索字符用来替换其他字符
sed 's/RNA/&AA/g' filename #在RNA后添加AA
sed '/RNA/ {s//&AA/g}' filename #作用同上
- q命令退出
sed '2q' filename #打印前2行后退出