awk RS, ORS, FS, OFS命令学习笔记

awk

  • 语法 awk ‘pattern + action’ [filename]

    • -pattern 正则表达式
    • -action 对匹配到的内容执行命令
  • awk常用命令

    1. FLIENAME awk浏览的文件名
    2. BEGIN 处理文本之前执行要执行的操作
    3. END 处理文本之后要执行的操作
    4. FS 设置输入域分隔符,等价于命令 -F
    5. NF 浏览记录的列的个数 (选择要操作的列数)
    6. NR 已读的行数  (选择要操作的行数)
    7 -F(field-separator) 域分隔符
    8. OFS(out-field-separator) 输出域分隔符
    9. RS(Records) record分隔符, 
    10. ORS(output record separator) 输出record分隔符
    
    
  • awk recordfield 的区分(重要)

    1. awk is a linux command
    
    awk is a linux command 这一行,就是record
    awk is a linux command 这一行的每个单词, 单词是一个字段,就是filed
    
    总结:
    1. record是指一行内容
    2. field 是指一行内容里面的一个字段
    
    举例来区分RS, ORS, FS, OFS
    
  • RS :在record里面,指定特定的 换行标志,特定的 换行标志后面的内容重新变成一行

    vim RS.txt
    a|b|c,de|mm
    
    awk 'BEGIN{RS="[|,]"}{print $0}' rs.txt
    

    输出结果

  • ORS: 将record原来的换行符号 自定义成自己想要的换行符号

    vim ORS.txt
    shenzhen
    hogwarts
    student
    
    awk 'BEGIN{ORS=" "}{print $0}' ORS.txt
    

    输出结果

  • FS(filed separato) 域分隔符,就是 字段与字段之间的分隔符

    touch FS.txt
    cat < /etc/passwd > FS.txt
    
    awk 'BEGIN{FS=":"} NR<8 {print $1, $2, $3}' FS.txt
    

    输出结果

  • OFS (Out field separator) 用 自定义字段分隔符 替换 原来的字段分隔符

    touch OFS.txt
    cat < /etc/passwd > FS.txt
    
    awk 'BEGIN{FS=":";OFS="-->"}{print $1, $2, $3}' OFS.txt
    

    输出结果

RS, ORS, FS, OFS总结

1. RS, ORS 操作对象是行分隔符
	- RS:在行内指定换行标志,换行标志后的内容自动换行,ORS自定义换行符替换原来的换行符

2. FS,OFS 操作对象字段分隔符
	- FS 是字段与字段之间的分隔符,主要用户查找
	- OFS 自定义字段分隔符替换原来的字段分隔符

欢迎大家指正补充

3 Likes
关闭