写一个 bash脚本以输出一个文本文件 nowcoder.txt中的行数
wc -l
经常查看日志的时候,会从文件的末尾往前查看,于是请你写一个 bash脚本以输出一个文本文件 nowcoder.txt中的最后5行
tail -5 nowcoder.txt
写一个 bash脚本以输出数字 0 到 500 中 7 的倍数(0 7 14 21...)的命令
for i in {0..500..7}
do
echo $i
done
写一个 bash脚本以输出一个文本文件 nowcoder.txt 中第5行的内容。
awk '{if (NR == 5) print $0}' nowcoder.txt
写一个 bash脚本以输出一个文本文件 nowcoder.txt中空行的行号,可能连续,从1开始
awk '{if ($0 == null) print NR}' nowcoder.txt
awk '/^$/ {print NR}' nowcoder.txt
写一个 bash脚本以去掉一个文本文件 nowcoder.txt中的空行
awk '{if ($1.length >= 1) print $1}' nowcoder.txt
sed '/^$/d' nowcoder.txt
写一个 bash脚本以统计一个文本文件 nowcoder.txt中字母数小于8的单词。
awk '{for(i=1;i<=NF;i++) if (length($i) <8) print $i}' nowcoder.txt
其中NF表示的字段数
假设 nowcoder.txt 内容如下:
root 2 0.0 0.0 0 0 ? S 9月25 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? I< 9月25 0:00 [kworker/0:0H]
web 1638 1.8 1.8 6311352 612400 ? Sl 10月16 21:52 test
web 1639 2.0 1.8 6311352 612401 ? Sl 10月16 21:52 test
tangmiao-pc 5336 0.0 1.4 9100240 238544 ?? S 3:09下午 0:31.70 /Applications
以上内容是通过ps aux | grep -v 'RSS TTY' 命令输出到nowcoder.txt文件下面的
请你写一个脚本计算一下所有进程占用内存大小的和:
awk 'BEGIN{sum=0} {sum=sum+$6} END{print sum}' nowcoder.txt
其中$0 指的是一行数据,$1指的是一行数据中的第一个,依次往后, 其实该提计算的是虚拟内存所占的页的数量之和,并不是虚拟虚拟内存的大小; 第一列是进程名,2是pid, 3是cpu百分比,4是内存的百分比,5是虚拟内存,6是页数量
写一个 bash脚本以统计一个文本文件 nowcoder.txt 中每个单词出现的个数。
为了简单起见,你可以假设:
nowcoder.txt只包括小写字母和空格。
每个单词只由小写字母组成。
单词间由一个或多个空格字符分隔。
示例:
假设 nowcoder.txt 内容如下:
welcome nowcoder
welcome to nowcoder
nowcoder
你的脚本应当输出(以词频升序排列):
to 1
welcome 2
nowcoder 3
cat nowcoder.txt| tr -s ' ' '\n' | sort | uniq -c | sort| awk '{print $2,$1}'
给定一个 nowcoder.txt文件,其中有3列信息,如下实例,编写一个sheel脚本来检查文件第二列是否有重复,且有几个重复,并提取出重复的行的第二列信息:
实例:
20201001 python 99
20201002 go 80
20201002 c++ 88
20201003 php 77
20201001 go 88
20201005 shell 89
20201006 java 70
20201008 c 100
20201007 java 88
20201006 go 97
结果:
2 java
3 go
awk '{print $2}' | sort | uniq -c | sort | grep -v '1'
写一个 bash脚本来转置文本文件nowcoder.txt中的文件内容。
为了简单起见,你可以假设:
你可以假设每行列数相同,并且每个字段由空格分隔
示例:
假设 nowcoder.txt 内容如下:
job salary
c++ 13
java 14
php 12
你的脚本应当输出(以词频升序排列):
job c++ java php
salary 13 14 12
awk '{
for (i=1;i<=NF;i++){
if (NR==1){
res[i]=$i
}
else{
res[i]=res[i]" "$i // 做追加处理
}
}
}END{
for(j=1;j<=NF;j++){
print res[j] // 每个字段是原始数据的一列
}
}' nowcoder.txt
awk是对每一行数据做处理, END是结束上次for循环的每一行数据的处理;然后将处理的数据再输出;
写一个 bash脚本以统计一个文本文件 nowcoder.txt中每一行出现的1,2,3,4,5数字个数并且要计算一下整个文档中一共出现了几个1,2,3,4,5数字数字总数。
示例:
假设 nowcoder.txt 内容如下:
a12b8
10ccc
2521abc
9asf
你的脚本应当输出:
line1 number: 2
line2 number: 1
line3 number: 4
line4 number: 0
sum is 7
awk '
{
count=0
len=length($0)
for(i=1;i<=len;i++){
s = substr($0,i,1)
if(0<s && s<6){
count++
total++
}
}
print "line"NR "number:"count
}END {
print "sum is"total
}' nowcoder.txt
substr(a,b,c) a是字符串, b是开始位置,c是多少个字符
写一个 bash脚本以实现一个需求,去掉输入中含有this的语句,把不含this的语句输出
示例:
假设输入如下:
that is your bag
is this your bag?
to the degree or extent indicated.
there was a court case resulting from this incident
welcome to nowcoder
你的脚本获取以上输入应当输出:
to the degree or extent indicated.
welcome to nowcoder
说明:
你可以不用在意输出的格式,包括空格和换行
grep -v "this"
写一个bash脚本以实现一个需求,求输入的一个的数组的平均值
第1行为输入的数组长度N
第2~N行为数组的元素,如以下为:
数组长度为4,数组元素为1 2 9 8
示例:
4
1
2
9
8
那么平均值为:5.000(保留小数点后面3位)
你的脚本获取以上输入应当输出:
5.000
awk '{
if(NR==1){
num=$1
sum=0
}else{
sum=sum+$1
}
}END{
printf("%.3f",sum/num)
}'
题目描述
写一个 bash脚本以实现一个需求,去掉输入中的含有B和b的单词
示例:
假设输入如下:
big
nowcoder
Betty
basic
test
你的脚本获取以上输入应当输出:
nowcoder test
说明:
你可以不用在意输出的格式,空格和换行都行
grep -v 'b' | grep -v 'B'