0606 第22章 linux gawk进阶

0606 第22章 linux gawk进阶

1. gawk的特点和高级之处是什么?

使用内建变量和自定义变量

2. FILEDWIDTHS,FS,RS,OFS,ORS是什么意思?gawk内置变量

FS设置$字段的分隔符,默认是空格。
OFS设置自定义的分隔符取代FS
RS可以按空格把好几行视作一行。
ORS设置自定义的分隔符取代RS。
FILEDWIDTHS用在中文上很可能会乱码,除非是3的倍数。

默认情况下,gawk将RS和ORS设为换行符。默认的RS值表明,输入数据流中的每行新文本就是一条新纪录。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zvvpIDRY-1654661032185)(https://oscimg.oschina.net/oscnet/up-3b62ad83a0ec75bd9983215ca62c046aad4.png)]

3. 更多的gawk变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5UQdmCL5-1654661032187)(https://oscimg.oschina.net/oscnet/up-705fc7db250210145d338013bf89bc2d716.png)]

4. ubantu怎么没有gawk?怎么安装gawk?

apt-get install gawk

5. gawk怎么使用shell环境变量?

$ gawk ’
> BEGIN{
> print ENVIRON[“HOME”]
> print ENVIRON[“PATH”]
> }’
/home/rich
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin

6. NF变量可以让你在不知道具体位置的情况下指定记录中的最后一个数据字段。

$ gawk ‘BEGIN{FS=":"; OFS=":"} {print 1 , 1, 1,NF}’ /etc/passwd
rich:/bin/bash
testy:/bin/csh
mark:/bin/bash
dan:/bin/bash
mike:/bin/bash
test:/bin/bash
NF变量含有数据文件中最后一个数据字段的数字值。可以在它前面加个美元符将其用作字段变量

7. FNR和NF的区别

FNR 当前数据文件中的数据行数
NR 已处理的数据行数

8. awk如何在begin中使用自定义变量?

gawk -v n=3 -f script2 data1
必须要加-v参数

9. awk怎么遍历数组

$ gawk ‘BEGIN{
> var[“a”] = 1
> var[“g”] = 2
> var[“m”] = 3
> var[“u”] = 4
> for (test in var)
> {
> print “Index:”,test," - Value:",var[test]
> }
> }’
Index: u - Value: 4
Index: m - Value: 3
Index: a - Value: 1
Index: g - Value: 2

10. awk ~波浪线什么意思? awk #NF 什么意思?

$ gawk -F: ‘$1 ~ /rich/{print 1 , 1, 1,NF}’ /etc/passwd
rich /bin/bash
波浪线~ 匹配操作符 matching operator 。 将正则匹配范围限制在$1 ,也可以取非!~
$NF与$1相对,代表最后一个字段。

11. awk 如何使用数学表达式

$ gawk -F, ‘$1 == “data11”{print $1}’ data1
-F,是表示分割符是逗号,

12. awk执行循环,在if中执行多条语句

$ gawk ‘{
> if ($1 > 20)
> {
> x = $1 * 2
> print x
> } else
> {
> x = $1 / 2
> print x
> }}’ data4
5
2.5
6.5
100
68

以下是上一个例子的单行格式版本。
$ gawk ‘{if ($1 > 20) print $1 * 2; else print $1 / 2}’ data4

13. awk使用while循环求平均数

$ cat data5
130 120 135
160 113 140
145 170 215
$ gawk ‘{
> total = 0
> i = 1
> while (i < 4)
> {
> total += $i
> i++
> }
> avg = total / 3
> print “Average:”,avg
> }’ data5
Average: 128.333
Average: 137.667
Average: 176.667

14. awk 使用printf打印格式, 类似C语言

$ gawk ‘{
> total = 0
> for (i = 1; i < 4; i++)
> {
> total += $i
> }
> avg = total / 3
> printf “Average: %5.1f\n”,avg
> }’ data5
Average: 128.3
Average: 137.7
Average: 176.7

15. gawk数学函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-emrzjlcx-1654661032188)(https://oscimg.oschina.net/oscnet/up-c723fc9a500914039a5aa601610fe67337f.png)]

16. gawk 位运算

除了标准数学函数外,gawk还支持一些按位操作数据的函数。
 and(v1, v2):执行值v1和v2的按位与运算。
 compl(val):执行val的补运算。
 lshift(val, count):将值val左移count位。
 or(v1, v2):执行值v1和v2的按位或运算。
 rshift(val, count):将值val右移count位。
 xor(v1, v2):执行值v1和v2的按位异或运算。
位操作函数在处理数据中的二进制值时非常有用。

16. gawk 内建字符串处理函数

很强大,怪不得叫编程语言,有些字符串处理和java差不多。查找,替换,排序。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-beP5iA3K-1654661032189)(https://oscimg.oschina.net/oscnet/up-d760721e67fab52329504f9dd2c09b4c195.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2NknT3Ff-1654661032190)(https://oscimg.oschina.net/oscnet/up-f55e780e778c4092a5da85d430eeffebe53.png)]

17. gawk怎么产生一个整数随机数

x = int(10 * rand())

18. linux 列表去重

for team in $(gawk –F, ‘{print $2}’ scores.txt | uniq)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值