我是靠谱客的博主 强健网络,最近开发中收集的这篇文章主要介绍牛客网--题库答案及分析(shell篇)统计文件的行数打印文件的最后5行输出7的倍数输出第5行的内容打印空行的行号去掉空行打印字母数小于8的单词统计所有进程占用内存大小的和统计每个单词出现的个数第二列是否有重复转置文件的内容打印每一行出现的数字个数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

牛客网--题库答案及分析(shell篇)

  • 统计文件的行数
  • 打印文件的最后5行
  • 输出7的倍数
  • 输出第5行的内容
  • 打印空行的行号
  • 去掉空行
  • 打印字母数小于8的单词
  • 统计所有进程占用内存大小的和
  • 统计每个单词出现的个数
  • 第二列是否有重复
  • 转置文件的内容
  • 打印每一行出现的数字个数

统计文件的行数

题目描述:
写一个 bash脚本以输出一个文本文件 nowcoder.txt中的行数
示例:
假设 nowcoder.txt 内容如下:
#include
using namespace std;
int main()
{
int a = 10;
int b = 100;
cout << “a + b:” << a + b << endl;
return 0;
}

输出:
9

cat nowcoder.txt |wc -l

——————————————————————————————————————————————————————

打印文件的最后5行

题目描述:
经常查看日志的时候,会从文件的末尾往前查看,于是请你写一个 bash脚本以输出一个文本文件 nowcoder.txt中的最后5行
示例:
假设 nowcoder.txt 内容如下:
#include
using namespace std;
int main()
{
int a = 10;
int b = 100;
cout << “a + b:” << a + b << endl;
return 0;
}

输出:
int a = 10;
int b = 100;
cout << “a + b:” << a + b << endl;
return 0;
}

# tail不加参数默认展示最后10行数据
tail -n 5 nowcoder.txt

——————————————————————————————————————————————————————

输出7的倍数

题目描述:
写一个 bash脚本以输出数字 0 到 500 中 7 的倍数(0 7 14 21…)的命令

:<<!
用法:seq [选项]... 尾数
seq [选项]... 首数 尾数
seq [选项]... 首数 增量 尾数
以指定增量从首数开始打印数字到尾数。
!
seq 0 500|awk '$0%7==0 {print $0}'

——————————————————————————————————————————————————————

输出第5行的内容

题目描述:
写一个 bash脚本以输出一个文本文件 nowcoder.txt 中第5行的内容。

示例:
假设 nowcoder.txt 内容如下:
welcome
to
nowcoder
this
is
shell
code
输出
is

:<<!
p
:打印
-n :silent模式,经过处理后的内容进行输出
!
sed -n '5p'

——————————————————————————————————————————————————————

打印空行的行号

题目描述:
写一个 bash脚本以输出一个文本文件 nowcoder.txt中空行的行号,可能连续,从1开始

示例:
假设 nowcoder.txt 内容如下:
a
b

c

d

e

f

输出
3
5
7
9
10

:<<!
^ : 首行标记符
$ : 尾行标记符
= : 行号
sed命令会去匹配符合^和$之间的值,这里使用^$写法,说明他们中间没有值,所以会匹配到空行
!
sed -n
'/^$/='
"nowcoder.txt"

——————————————————————————————————————————————————————

去掉空行

题目描述:
写一个 bash脚本以去掉一个文本文件 nowcoder.txt中的空行
示例:
假设 nowcoder.txt 内容如下:
abc

567

aaa
bbb

ccc
输出
abc
567
aaa
bbb
ccc

sed -n
'/^$/d'
"nowcoder.txt"

——————————————————————————————————————————————————————

打印字母数小于8的单词

题目描述:
写一个 bash脚本以统计一个文本文件 nowcoder.txt中字母数小于8的单词。
示例:
假设 nowcoder.txt 内容如下:
how they are implemented and applied in computer
输出
how
they
are
and
applied
in

for i in `cat nowcoder.txt`
do
if [ `echo $i|wc -m` -lt 9 ]
then
echo $i
fi
done

——————————————————————————————————————————————————————

统计所有进程占用内存大小的和

题目描述:
假设 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文件下面的
请你写一个脚本计算一下所有进程占用内存大小的和:

:<<!
ps aux每列数据代表的含义: USER
PID
%CPU
%MEM
VSZ
RSS
TTY
STAT
START
TIME
COMMAND
%MEM :占用内存的使用率
RSS
:占用的内存大小
因此本道题要对第6列的数据进行处理
!
cat nowcoder.txt|awk '{a+=$6}END{print a}'

——————————————————————————————————————————————————————

统计每个单词出现的个数

题目描述:
写一个 bash脚本以统计一个文本文件 nowcoder.txt 中每个单词出现的个数。

为了简单起见,你可以假设:
nowcoder.txt只包括小写字母和空格。
每个单词只由小写字母组成。
单词间由一个或多个空格字符分隔。

示例:
假设 nowcoder.txt 内容如下:
welcome nowcoder
welcome to nowcoder
nowcoder
输出(以词频升序排列):
to 1
welcome 2
nowcoder 3

:<<!
思路:
1、把每行句子拆开,以每个单词作为单独的一行。这里使用tr命令,用-s(以指定字符替换对应重复数据)或-t(替换)都可以
2、对所有行进行统计,uniq(对重复的行or列操作),-c计数,这里需要注意,uniq只会对相邻行or列进行比较
3、用sort对分割后的数据进行排序,不管何种排序方式,相同的数据总是能放到相邻位置,排序后再用uniq处理
4、uniq -c统计后的数据统计数在前,被统计的字符在后
!
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

# uniq -c 相邻数据没有相同的情况下,参与统计,记作1 
cat nowcoder.txt|awk '{print $2}'|sort|uniq -c|awk '$1>1{print $1$2}'|sort

—————————————————————————————————————————————————————**

转置文件的内容

题目描述:
写一个 bash脚本来转置文本文件nowcoder.txt中的文件内容。

为了简单起见,你可以假设:
你可以假设每行列数相同,并且每个字段由空格分隔

示例:
假设 nowcoder.txt 内容如下:
job salary
c++ 13
java 14
php 12
输出(以词频升序排列):
job c++ java php
salary 13 14 12

cat nowcoder.txt|awk '{printf $1;a=a$2}'END'{print "";print a}'

—————————————————————————————————————————————————————**

打印每一行出现的数字个数

题目描述:
写一个 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

j=0
sum=`cat nowcoder.txt|grep -o [12345]|wc -w`
for i in `cat nowcoder.txt`
do
((j=j+1))
num=`echo $i|grep -o [12345]|wc -w`
echo $num|awk '{print "line"'$j'" number:"$num}'
done
echo "sum is $sum"

最后

以上就是强健网络为你收集整理的牛客网--题库答案及分析(shell篇)统计文件的行数打印文件的最后5行输出7的倍数输出第5行的内容打印空行的行号去掉空行打印字母数小于8的单词统计所有进程占用内存大小的和统计每个单词出现的个数第二列是否有重复转置文件的内容打印每一行出现的数字个数的全部内容,希望文章能够帮你解决牛客网--题库答案及分析(shell篇)统计文件的行数打印文件的最后5行输出7的倍数输出第5行的内容打印空行的行号去掉空行打印字母数小于8的单词统计所有进程占用内存大小的和统计每个单词出现的个数第二列是否有重复转置文件的内容打印每一行出现的数字个数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部