linux文本截取

cut

cut以行为处理单位,提取指定区域数据。

  1. cut -bn ,以字节(byte)为分割单位
    -b list 打印出list中指定位置字节,制表符和空格符均为一个字节;
    -n 对于多字节字符不进行分割,主要针对汉字(一个汉字三个字节)等多字节字符;
  2. cut -c ,以字符(character)为分割单位
    -c list 打印出list中指定位置字符,对于单字节字符同-b选项,对于多字节字符有区别;
  3. cut -df ,以域(field)为分割单位
    -f list 指定取出哪一列,默认以制表符作为分隔符;
    -d byte 指定分隔符;

sed

stream editor,以行为单位,每处理完一行立即打印,再处理下一行。

  1. sed [options] 'command' filename
    options是指sed的命令行参数,sed从filename标准输入。如果操作比较复杂,为了简便,可以把命令写到script,然后-f参数调用。
  2. sed -f sed_script filename
    sed_script是指对输入执行的一个或多个命令,sed会依次读取输入文件的每一行操作指令并做相应处理.
    3.d删除行
    sed '2,4d' filename #删除第2到第4行
  3. 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
  1. 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…… 
  1. a/i插入命令
sed '3 i line' filename  # i表示在3行之前插入
sed '3 a LINE' filename  # a表示在3行之后插入
  1. n命令读取下一行,用下一个命令处理新的行
    n命令是两行为一个单位进行处理的,其中第一行为匹配行而非处理行
    sed '/1#/ {n; s/RNA/DNA/g}' filename
    首先匹配1即第1行,然后替换命令处理下一行即第2行
  2. ;一次执行多个命令
    sed 's/RNA/DNA/g; y/12345/ABCDE/' filename
  3. &保存搜索字符用来替换其他字符
sed 's/RNA/&AA/g' filename  #在RNA后添加AA
sed '/RNA/ {s//&AA/g}' filename  #作用同上
  1. q命令退出
    sed '2q' filename #打印前2行后退出

你可能感兴趣的:(linux文本截取)