题目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 %方法2:NF代表当前行的字段数,空行的话字段数为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
题解
方法1:
for i in `cat test2`
do
if [ `echo $i |wc -m` -lt 9 ];then %wc -m表示统计字符个数,注意每行最后的换行符也是个字符
echo $i
fi
done
方法2:
for 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
}
}'