shell练习<1>

题目1

描述

  • 写一个 bash脚本以输出一个文本文件 nowcoder 中空行的行号,可能连续,从1开始
  • 假设 nowcoder 内容如下:
a
b
 
c
 
d
 
e
 
 
f
  • 正确输出
    3
    5
    7
    9
    10

题解

#!/bin/bash
awk^$/{print NR}'       %方法1
sed -n '/^$/=' nowcoder  %方法2
awk '{if(NF==0)print NR}' nowcoder    %方法3:匹配字段数为0的行,然后将行号打印

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

题目2

描述

  • 写一个 bash脚本以去掉一个文本文件 nowcoder.txt中的空行
  • 假设 test1 内容如下:
abc
 
567
 
aaa
bbb
 
 
ccc
  • 正确输出
    abc
    567
    aaa
    bbb
    ccc

题解

sed '/^$/d' test1     %方法1
awk NF test1          %方法2NF代表当前行的字段数,空行的话字段数为0,被awk解释为假,因此不进行输出
grep -v '^$' test1    %方法3:先匹配出空行,然后-v表示将结果反转输出

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

题目3

描述

  • 写一个 bash脚本以统计一个文本文件 test2 中字母数小于8的单词。
  • 假设 test2 内容如下:
    how they are implemented and applied in computer
  • 你的脚本应当输出:
    how
    they
    are
    and
    applied
    in

题解

方法1for i in `cat test2`
do
    if [  `echo $i |wc -m` -lt 9 ];then      %wc -m表示统计字符个数,注意每行最后的换行符也是个字符
        echo $i 
    fi
done

方法2for i in `cat test2`
do
    if [ $(echo $i |wc -L) -lt 8 ];then      %wc -L表示统计单词最大长度
        echo $i
    fi
done

方法3:
cat test2 | awk '{
for (i=1;i<=NF;i++){
        if (length($i) < 8)
                print $i
}
}'

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值