题目16: 判断输入的是否为IP地址
牛客链接:判断输入的是否为IP地址
描述
写一个脚本统计文件nowcoder.txt中的每一行是否是正确的IP地址。
如果是正确的IP地址输出:yes
如果是错误的IP地址,四段号码的话输出:no,否则的话输出:error
假设nowcoder.txt内容如下
192.168.1.1
192.168.1.0
300.0.0.0
123
你的脚本应该输出
yes
yes
no
error
题解:
# for循环中的NF是指,一行中分割后 有几个元素, -F "." 代表一行以"."分割
awk -F "." '
{
flag = 0;
if(NF != 4){
print "error";
}else{
for(i = 0; i <= NF; i++){
if($i < 0 || $i > 255){
flag = 1;
}
}
if(flag == 1)
print "no";
else
print "yes";
}
}
'
题目17: 将字段逆序输出文件的每行
牛客链接:将字段逆序输出文件的每行
描述
将字段逆序输出文件nowcoder.txt的每一行,其中每一字段都是用英文冒号: 相分隔。
假设nowcoder.txt内容如下:
nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
root:*:0:0:System Administrator:/var/root:/bin/sh
你的脚本应当输出
/usr/bin/false:/var/empty:Unprivileged User:-2:-2:*:nobody
/bin/sh:/var/root:System Administrator:0:0:*:root
题解:
# -F "xxx" 一行以"xxx"分割
# NF 分割后一行中的元素个数
awk -F ":" '
{
sum = "";
for(i = NF; i >0 ;i--){
if(i>1)
sum = sum $i ":";
else
sum = sum $i;
}
print sum;
}'
题目18: 域名进行计数排序处理
牛客链接:域名进行计数排序处理
描述
假设我们有一些域名,存储在nowcoder.txt里,现在需要你写一个脚本,将域名取出并根据域名进行计数排序处理。
假设nowcoder.txt内容如下:
http://www.nowcoder.com/index.html
http://www.nowcoder.com/1.html
http://m.nowcoder.com/index.html
你的脚本应该输出:
2 www.nowcoder.com
1 m.nowcoder.com
题解:
# 1. 先按照 "/" 分割 然后取出来每行第3个元素
awk -F "/" '{print $3}'
# 结果如下:
www.nowcoder.com
www.nowcoder.com
m.nowcoder.com
exam.nowcoder.com
www.nowcoder.com
m.nowcoder.com
www.nowcoder.com
hr.nowcoder.com
hr.nowcoder.com
m.nowcoder.com
# 2. 对1的结果排序
awk -F "/" '{print $3}' | sort
# 结果如下:
exam.nowcoder.com
hr.nowcoder.com
hr.nowcoder.com
m.nowcoder.com
m.nowcoder.com
m.nowcoder.com
www.nowcoder.com
www.nowcoder.com
www.nowcoder.com
www.nowcoder.com
# 3. 对2的结果去重复
awk -F "/" '{print $3}' | sort | uniq -c
# 结果如下:
1 exam.nowcoder.com
2 hr.nowcoder.com
3 m.nowcoder.com
4 www.nowcoder.com
# 4. 对3的结果重新逆序排序
awk -F "/" '{print $3}' | sort | uniq -c | sort -r
# 结果如下:
4 www.nowcoder.com
3 m.nowcoder.com
2 hr.nowcoder.com
1 exam.nowcoder.com
# 5. 每行输出第按照空格或Table分割后,第1个元素和第2个的元素
awk -F "/" '{print $3}' | sort | uniq -c | sort -r | awk '{print $1 " " $2}'
# 结果如下:
4 www.nowcoder.com
3 m.nowcoder.com
2 hr.nowcoder.com
1 exam.nowcoder.com