zoukankan      html  css  js  c++  java
  • linux:awk之RS、ORS与FS、OFS

    转载请注明出处,尊重作者劳动成果

    作者不善言谈,如有错误,请指正!!!

    awk之RS、ORS与FS、OFS

    RS:Record Separator,记录分隔符

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

    FS:Field Separator,字段分隔符

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

    PS:RS、ORS、FS、OFS的英文解释绝不是这样的,这里只是解释清楚。建议去阅读awk的英文读物,其中解释了缩写的含义。

    什么是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

    1. a\n
    2. b\n
    3. c\n
    4. d\n
    5. e\n

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

    可以用一下方法来理解:

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

    示例

    1.txt

    a|b|c

    代码:awk 'BEGIN{ RS="|"; } { print $0 }'

    a

    b

    b

    ORS:可以看成RS的逆向过程

    示例

    1.txt

    a

    b

    c

    可以这样理解:

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

    awk 'BEGIN{ ORS="----" }{ print $0 }' 1.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

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

    awk 'BEGIN{ FS="----";}{ print $1,$2,$3 }' filename

    i love you

    OFS:输出的字段分隔符。

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

    awk 'BEGIN{ FS="----";OFS="*****" }{ print $1,$2,$3 }' filename

    i*****love*****you

    其实OFS还有一个例子
    echo "abc" | awk '{ OFS="." } { NF=NF; print NF,$0}'
    结果
    1.abc

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

    Have a nice day!!!
  • 相关阅读:
    www.insidesql.org
    kevinekline----------------- SQLSERVER MVP
    Sys.dm_os_wait_stats Sys.dm_performance_counters
    如何使用 DBCC MEMORYSTATUS 命令来监视 SQL Server 2005 中的内存使用情况
    VITAM POST MORTEM – ANALYZING DEADLOCKED SCHEDULERS MINI DUMP FROM SQL SERVER
    Cargo, Rust’s Package Manager
    建筑识图入门(初学者 入门)
    Tracing SQL Queries in Real Time for MySQL Databases using WinDbg and Basic Assembler Knowledge
    Microsoft SQL Server R Services
    The Rambling DBA: Jonathan Kehayias
  • 原文地址:https://www.cnblogs.com/fhefh/p/2251656.html
Copyright © 2011-2022 走看看