美文网首页
awk之RS、ORS与FS、OFS

awk之RS、ORS与FS、OFS

作者: 夕颜00 | 来源:发表于2021-02-23 13:50 被阅读0次

    RS:Record Separator,记录分隔符

    ORS:Output Record Separate,输出当前记录分隔符

    FS:Field Separator,列(字段)分隔符

    OFS:Out of Field Separator,输出列分隔符

    一、什么是field(字段),什么是record(记录行)?

    示例:

    • 1.txt
      1.i am a student.
      2.i like to swim
      3.hello moto

    1代表第一个记录行,2代表第二个记录行,3代表第三个记录行。通过观察我们可以知道总共有3个记录行(record)。

    看看第一行:“i am a student”,这一行的每个单词都是一个字段(field)。“i”是一个字段,“am”是一个字段,“a”是一个字段,“student”是一个字段,该行总共有4个字段。

    二、RS与ORS

    RS:记录行分隔符

    示例:

    • 1.txt
      a\n
      b\n
      c\n
      d\n
      e\n

    该文本总共有5行,每一行都有一个换行符“\n”。所以每行记录都是以“\n”为一个(换行的)标志。

    可以用一下方法来理解:

    找到某某标志,让每个某某后的内容重新变成一行

    [ttxie@41 awk]$ cat 1.txt 
    a|b|c
    [ttxie@41 awk]$ awk 'BEGIN{RS="|";} {print $0}' 1.txt 
    a
    b
    c
    
    
    ORS:可以看成RS的逆向过程

    示例

    [ttxie@41 awk]$ cat 2.txt 
    a
    b
    c
    
    [ttxie@41 awk]$ awk 'BEGIN{ORS="----"} {print $0}' 2.txt 
    a----b----c--------
    

    可以这样理解:

    观察每一行的“换行符号”,然后将“换行符号”替换成你想要的符号。

    FS:字段分隔符

    FS默认值为“ (空格)”,如“hello moto”.

    在“hello moto”中有一个空格,空格就是hello与moto的分隔符(separator),而hello与moto就为字段(files)。awk以空格来区分。

    在看看“i----love----you”,如果我们用命令“awk “{ print $1 }””会看到结果为:

    i----love----you

    如果想打印出三个字母,通过观察可发现“----”为分隔符。

    [ttxie@41 awk]$ cat 3.txt 
    a----b----c--------
    [ttxie@41 awk]$ awk 'BEGIN{FS="----"} {print $0}' 3.txt 
    a----b----c--------
    [ttxie@41 awk]$ awk 'BEGIN{FS="----"} {print $1,$2,$3}' 3.txt 
    a b c
    
    OFS:输出的字段分隔符。

    这么解释吧,如上例中“i----love----you”,“----”为分隔符(FS),如果我们想改为用其他符号显示可以这样:

    [ttxie@41 awk]$ cat 3.txt 
    a----b----c--------
    [ttxie@41 awk]$ awk 'BEGIN{FS="----";OFS="****"} {print $1,$2,$3}' 3.txt 
    a****b****c
    

    其实OFS还有一个例子

    [ttxie@41 awk]$ echo "abc" | awk '{ OFS="." } { NF=NF; print NF,$0}'
    1.abc
    

    PS:RS与ORS可以说成是一个互逆的过程(↔)也可以看成一个替换的过程,但是看成互逆的过程比较好理解;FS与OFS就是一个替换的过程。

    相关文章

      网友评论

          本文标题:awk之RS、ORS与FS、OFS

          本文链接:https://www.haomeiwen.com/subject/mfdrfltx.html