b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

awk Oneliner(2)文本替换

电脑杂谈  发布时间:2020-04-05 01:21:11  来源:网络整理

awk 替换_awk rstart_awk数组

9. 将内容居中放置在79个字符的宽页面上

awk '{ l=length(); s=int((79-l)/2); printf "%"(s+l)"sn", $0 }'

第一句使用length函数来计算当前内容行的长度,第二句计算应在行的开头添加多少空格,第三句将内容对齐到内容的右侧s + l宽度.

10. 将foo替换为bar

awk '{ sub(/foo/,"bar"); print }'

如上所述,子函数用bar替换每行中的第一个foo. 但是,如果要将每行中的所有foo替换为bar,则需要使用以下语句

awk '{ gsub(/foo/,"bar"); print }'

另一种方法是使用gensub函数

awk '{ $0=gensub(/foo/,"bar",4); print }'

awk 替换_awk数组_awk rstart

此语句的不同之处在于,它仅用bar代替了每行中第四次出现的foo. 它的原型是gensub(regex,s,h [,t]),它将字符串t中的hth替换为s. 如果未提供t参数,则默认t为$0. gensub不是标准函数,只能在GNU Awk或netBSD包含的awk中使用它.

11. 在包含baz的行中,将foo替换为bar

awk '/baz/ { sub(/foo/,"bar") }; {print}'

12. 在没有baz的行中,将foo替换为bar

awk '!/baz/ { gsub(/foo/, "bar") }; { print }'

与上一句话的区别在于使用!让baz返回false.

13. 用红色代替猩红色或或puce

awk '{ gsub(/scarlet|ruby|puce/,"red"); print }'

14. 使文字上下颠倒并模仿tac

awk rstart_awk 替换_awk数组

awk '{ a[i++] = $0} END { for (j=i-1; j>=0;) print a[j--] }'

这是单行代码的困难,将每行的内容放入数组a中. 例如: 有三行,即“ foo”,“ bar”,“ baz”. 序列a包含以下内容: [0] =“ foo”,[1] =“ bar”,[2] =“ baz”. 当awk执行完所有行处理后,它将执行END {}操作. END函数将循环输出a的数组,如以下示例所示:

for (j = 2; j >= 0; ) print a[j--]

让变量j从a的最大值变为0,然后从后面逐行输出内容.

15. 连接以下一行结尾的行

awk '/$/ { sub(/$/,""); getline t; print $0 t; next }; 1'

(/ $ /awk 替换,“”)函数表达式被删除. 然后,getline函数获取下一行的内容并将其存储在变量t中,并输出当前行(已删除)和下一行的连接内容. “ Print $ 0 t”打印原始行和新读取的行(到变量t中). 并使用next跳过下一个1以避免重复输出. 如果当前行无尾,它将直接执行1输出.

16. 排序并输出所有用户名

awk -F ":" '{ print $1 | "sort" }' /etc/passwd

awk数组_awk rstart_awk 替换

在这里,首先使用-F将分隔符指定为冒号,然后使用|. 指定要逐行传递到外部程序排序的输出内容. (这真的很奇怪).

17. 以相反的顺序输出前两个字段

awk '{ print $2, $1 }' file

18. 交换每行的前两个字段

awk '{ temp = $1; $1 = $2; $2 = temp; print }'

由于要输出整行,因此必须重新分配$ 1和$ 2并使用一个临时变量进行转移.

19. 删除每行的第二个字段

awk '{ $2 = ""; print }'

20. 以相反的顺序输出每一行的所有字段

awk rstart_awk 替换_awk数组

awk '{ for (i=NF; i>0; i--) printf("%s ", $i); printf ("n") }'

21,删除连续的重复行

awk 'a != $0; { a = $0 }'

前面的句子省略了该动作,并选择输出与a不同的整行;后面的句子省略了模式,并将当前行的内容分配给a. a在此示例中,左和右是上一行的内容.

22. 删除不连续的重复行

awk '!a[$0]++'

使用当前行的内容作为数组a的索引. 如果a中已经有$ 0的记录,则会遇到重复记录. pattern的值为0,不会输出.

23. 每5行用逗号连接

awk 'ORS=NR%5?",":"n"'

在这里awk 替换,在输出的每一行之前,请重新定义ORS,如果行号可被5整除,则为n,否则为逗号.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-164142-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 陈俊言
        陈俊言

        所以一线人员有权直接开火

      热点图片
      拼命载入中...