SHELL练习题(1-11题)记录(牛客)

说明:demo是临时文件(做题专用的txt文档)

SHELL1 统计文件的行数:

cat demo| wc -l

cat demo | awk 'END{print NR}'

SHELL2 打印文件的最后5行:

cat demo | tail -5

cat demo | awk 'NR>=5{print $0}' //NR:代表当前处理的行号

SHELL3 输出 0 到 500 中 7 的倍数:

seq 0 7 500

for i in {0..500..7};do echo $i;done

for((i=0;i<=500;i+=7));do echo $i ;done

((...)) 是因为在 Bash shell 中,双括号主要用于进行算术运算和算术条件判断

SHELL4 输出第5行的内容:

cat demo | awk '{if(NR==5) print $1}'

cat demo | head -5 | tail -1

cat demo | awk 'NR==5'

同样是判断行号是否为 5,但这里没有使用 {} 块和 print 语句。在 AWK 中,如果没有 {} 块,当条件 NR==5 满足时,默认会打印出当前整行内容。

SHELL5 打印空行的行号:

cat demo | grep -n '^'\|awk -F\[:\] '{print 1}' // -n:显示行号

cat demo | awk 'length($0)==0 {print NR}'

cat demo | awk 'NF==0 {print NR}' //NF:表示当前行的字段数量

SHELL6 去掉空行:

cat demo |xargs |tr ' ' '\n'

cat demo | awk 'NF!=0 {print $1}'

cat demo | grep -v '^' //'\^':代表空行

SHELL7 打印字母数小于8的单词:

cat demo | tr ' ' '\n'|awk '{if(length(i)\<8) print i}'

cat demo | awk '{for(i=1;i<=NF;i++) if(length(i)\<8) print i}'

SHELL8 统计所有进程占用内存百分比的和:

cat demo|awk '{s+=$4}END{print s}'

SHELL9 统计每个单词出现的个数:

cat demo | awk '{for(i=1;i<=NF;i++)print i}' \| sort \| uniq -c \| sort \| awk '{print 2" "$1}'

SHELL10 第二列是否有重复:

cat demo | awk '{print $2}'|sort|uniq -c|sort |tail -2

cat demo | awk -F'[ ]+' '{print $2}' | sort | uniq -cd |sort //uniq -d:只显示重复

SHELL11 转置文件的内容

cat demo |awk '{for(i=1;i<=NF;i++){a[NR,i]=$i}}END{for(i=1;i<=NF;i++){for(j=1;j<=NR;j++){printf a[j,i]" "}print ""}}'

相关推荐
苏宸啊1 小时前
Linux指令篇(一)
linux·运维·服务器
睡不醒的猪儿1 小时前
nginx常见的优化配置
运维·nginx
我要升天!2 小时前
Linux中《网络基础》
linux·运维·网络
国强_dev2 小时前
在数据库开发和运维中的“错误信息误导(Red Herring)”
运维·adb·数据库开发
安科瑞刘鸿鹏172 小时前
工业自动化系统中抗晃电保护的协同控制研究
运维·网络·嵌入式硬件·物联网
ZStack开发者社区2 小时前
ZStack Cloud 5.5.0正式发布
运维·服务器·网络
草莓熊Lotso2 小时前
脉脉独家【AI创作者xAMA】|当豆包手机遭遇“全网封杀”:AI学会操作手机,我们的饭碗还保得住吗?
运维·开发语言·人工智能·智能手机·脉脉
鸽芷咕2 小时前
【2025年度总结】时光知味,三载同行:落笔皆是沉淀,前行自有光芒
linux·c++·人工智能·2025年度总结
羑悻的小杀马特2 小时前
指尖敲代码,笔尖写成长:2025年度总结与那些没说出口的碎碎念
linux·c++·博客之星·2025年度总结
三不原则3 小时前
银行 AIOps 实践拆解:金融级故障自愈体系如何搭建
大数据·运维