牛客linux

1、 统计文件的行数

# 方法 1
wc -l ./nowcoder.txt | awk '{print $1}'
# 方法 2 ,awk 可以打印所有行的行号, 或者只打印最后一行
awk '{print NR}' ./nowcoder.txt |tail -n 1
awk 'END{print NR}' ./nowcoder.txt
# 方法 3 grep -c 、-n等等
grep -c "" ./nowcoder.txt 
grep -n "" ./nowcoder.txt  | awk -F ":" '{print $1 }' | tail -n 1
# 方法 4 sed
sed -n '$=' ./nowcoder.txt

awk常用的变量

$0 表示当前处理的整个一行
$1 是分割后的第一个字段,$n 每行第n个字段
-F 用来指定分隔符
NF 字段数量变量(Number Of Field,当前行的字段的个数,(当前行被分成了几列),字段数量)
NR 行号,当前处理的文本行的行号,会连续记录行号
# 输出全部内容
awk 
BEGIN 模式指定了处理文本之前需要执行的操作(第一行)
END 模式指定了处理完所有行之后需要执行的操作


在这里插入图片描述

2、 打印文件的最后5行 和 5个字节

# 
tail -n 5 nowcoder.txt [或者:tail -5 nowcoder.txt] : 输出文件的最后5行
tail -n +5 nowcoder.txt : 输出从第5行开始到文件结尾的内容;
tail -n -5 nowcoder.txt : 输出从倒数 第五行开始到文件结尾的内容;
tail -c 5 nowcoder.txt : 表示输出文件最后5个字节;

3、输出 0 到 500 中 7 的倍数

# 方法 1
for item in {0..500..7}
do 
    echo $item
done
# 方法 2, seq命令用于输出 连续的数字、 固件间隔的数字、指定格式的数字
seq 0 7 500

# 带循环list的for循环
实现一:依次输出训练list中的内容 【list内容可以是数字也可以是串】
for item in 1 4 5  hello world
 do 
    echo $item
done
运行结果:
1
4
6
hello
world


实现二:依次输出一个范围内的值,如下为输出1到5的值
for item in {1..5}
do
    echo $item
done
运行结果:
1
2
3
4
5

实现三: 设置输出的间隔值,如下为间隔2输出【也就是输出10以内的所有奇数】
for item in {1..10..2}
do
    echo $item
done
运行结果:
1
3
5
7
9

实现四: 输出当前目录下所有的文件和文件夹
for file in $(ls)
do 
    echo $file
done

for file in *
do 
    echo $file
done

# 不带循环list的for循环
将输入的参数循环输出【这里使用@来获取参数列表】,脚本test.sh 内容如下:

echo "input the world:"
for item in "$@"
do 
    echo $item
done
echo "total param : $#" 

运行: sh test.sh  hello world   【带了两个参数】
运行结果: 
intput the world
hello
world
total param : 2

【备注】 $@ 获取参数列表内容;  $# 获取输入参数的个数;

一、输出连续的数字
   seq 1 100 
     表示: 输出所有1到100之间的数字;

二、输出固定间隔的数字
   seq 0 7 500
     表示: 输出所有 0到500内 7个倍数;

三、输出指定格式的数字 
  1、【-s 用于使用指定的字符串分割数字】
   seq -s "+"  1 100
    表示:输出1到100之间的数字,每个数字间由+号间隔;
  
  2、【-f 使用print 样式的浮点格式输出,默认使用 %g 】
   seq -f "file%g"  1 10
    表示:输出给是为: file1  到 file10 ;  如下:
   file1
   file2
   file3
   file4
   file5
   file6
   file7
   file8
   file9
   file10

4、输出第5行的内容

# 方法 1
head -n 5 nowcoder.txt | tail -n 1
# 方法 2 sed -n :仅将 sed 动作 编辑后的数据进行输出。"n1,n2动作":对n1行到n2行进行操作。p:动作,表示print,打印输出。
sed -n 5p
sed -n "5,5p" nowcoder.txt
# 方法 3 
awk -n "NR==5" ./nowcoder.txt
# NR==5 匹配第五行;{}中放匹配后要执行的命令, 0输出行的所有内容
awk 'NR==5{print 0}' ./nowcoder.txt

5、打印空行的行号

# 方法1 grep, ^代表行首,$代表行尾,然后 grep -n捕获该行,并且打印行号; sed 's/a/b/' 会将a替换成b,因此sed 's/://' 就实现了去掉:的效果
grep -n '^$' $1 | sed 's/://'

# 方法 2 /^$/表示空字符串即该行是空字符串即空行;=输出行数
sed -n '/^**$/= ' nowcoder.txt 
sed -n '/^$/=' nowcoder.txt
# 方法 3
awk '/^$/ {print NR}' nowcoder.txt 

6、去掉空行

# 方法 1
grep -v '^$'
# 方法 2 判断当前行的内容然后输出
awk '{if($0 != "") {print $0}}' ./nowcoder.txt
# 方法 3 awk 做非空校验然后输出
cat ./nowcoder.txt | awk NF

# 方法 4 sed 是流式编辑器,主要用来对文件做增删改操作;sed是对文件做逐行读取,逐行匹配,匹配通过,执行sed命令,匹配不通过原样输出,默认不对源文件做修改,要修改加 -i 

sed '/^$/d' nowcoder.txt

7、打印字母数小于8的单词

# 方法 1
#!/bin/bash
# NF是当前记录的字段数
awk -F" " '{for(i=1;i<=NF;i++){if(length($i) < 8){print $i}}}' nowcoder.txt

# 方法 2
IFS=" "
words=($(cat nowcoder.txt))
for word in ${words[@]}
do
    [ ${#word} -lt 8 ] && echo $word
done < nowcoder.txt
exit 0

# 方法3、4、5
cat nowcoder.txt | sed 's/ /\n/g' | awk '{if(length($0)<8) print}'

cat nowcoder.txt | awk 'BEGIN{RS=" "} {if(length($0)<8) print $0;}'

cat nowcoder.txt | xargs -n 1 | awk '{if(length($0)<8) print;}'

cat nowcoder.txt | sed 's/ /\n/g' | awk '/^.{1,7}$/'

8、统计所有进程占用内存百分比的和

# 方法 1
awk -F" " '{sum+=$4} END{print sum}' nowcoder.txt

# 方法 2
 awk 'BEGIN{sum=0}{sum+=$4}END{print sum}' ./nowcoder.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/928778.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“放弃Redis Desktop Manager使用Redis Insight”:日常使用教程(Redis可视化工具)

文章目录 更新Redis Insight连接页面基础解释自动更新key汉化暂时没有找到方法&#xff0c; Redis Desktop Manager在连接上右键在数据库上右键在key上右键1、添加连接2、key过期时间 参考文章 更新 (TωT)&#xff89;~~~ β&#xff59;ё β&#xff59;ё~ 现在在维护另一…

Marvell第四季度营收预计超预期,定制芯片需求激增

芯片制造商Marvell Technology&#xff08;美满电子科技&#xff09;&#xff08;MRVL&#xff09;在周二发布了强劲的业绩预告&#xff0c;预计第四季度的营收将超过市场预期&#xff0c;得益于企业对其定制人工智能芯片的需求激增。随着人工智能技术的快速发展&#xff0c;特…

python使用python-docx处理word

文章目录 一、python-docx简介二、基本使用1、新建与保存word2、写入Word&#xff08;1&#xff09;打开文档&#xff08;2&#xff09;添加标题&#xff08;3&#xff09;添加段落&#xff08;4&#xff09;添加文字块&#xff08;5&#xff09;添加图片&#xff08;6&#xf…

视频监控汇聚平台:Liveweb安防监控平台实现接入监控视频集中管理方案

随着各行业数字化转型的不断推进&#xff0c;视频监控技术在行业内的安防应用及管理支撑日益增多。然而&#xff0c;由于前期规划不清晰、管理不到位等问题&#xff0c;视频监管系统普遍存在以下问题&#xff1a; 1. 各部门单位在视频平台建设中以所属领域为单位&#xff0c;导…

抖音评论系统的实现思路

抖音大家都刷过。点开抖音的一个视频的评论&#xff0c;他会有一个根评论&#xff0c;根评论下面会有子评论&#xff0c;子评论中还有有对子评论的评论。具体如下图&#xff1a; 通过上面的图片可以直观的看见&#xff0c;这三种类型的评论。然后评论是根据时间的倒叙排列的。肯…

4.STM32通信接口之SPI通信(含源码)---软件SPI与W25Q64存储模块通信实战《精讲》

经过研究SPI协议和W25Q64&#xff0c;逐步了解了SPI的通信过程&#xff0c;接下来&#xff0c;就要进行战场实战了&#xff01;跟进Whappy步伐&#xff01; 目标&#xff1a;主要实现基于软件的SPI的STM32对W25Q64存储写入和读取操作&#xff01; 开胃介绍&#xff08;代码基本…

PMP–一、二、三模、冲刺–分类–10.沟通管理

文章目录 技巧十、沟通管理 一模10.沟通管理--1.规划沟通管理--文化意识--军事背景和非军事背景人员有文化差异5、 [单选] 项目团队由前军事和非军事小组成员组成。没有军事背景的团队成员认为前军事团队成员在他们的项目方法中过于结构化和僵化。前军事成员认为其他团队成员更…

「Mac畅玩鸿蒙与硬件42」UI互动应用篇19 - 数字键盘应用

本篇将带你实现一个数字键盘应用&#xff0c;支持用户通过点击数字键输入数字并实时更新显示内容。我们将展示如何使用按钮组件和状态管理来实现一个简洁且实用的数字键盘。 关键词 UI互动应用数字键盘按钮组件状态管理用户交互 一、功能说明 数字键盘应用将实现以下功能&…

Svn如何切换删除账号

记录Svn清除切换账号 1.首先打开小乌龟的设置如下图 打开设置后单击已保存数据&#xff0c;然后选择清除 接上图选择清除后&#xff0c;就可以打勾选择清除已保存的账号&#xff0c;我们再次检出的就可以切换账号了 &#x1f449;总结 本次记录Svn清除切换账号 如能帮助到你…

7. 一分钟读懂“单例模式”

7.1 模式介绍 单例模式就像公司里的 打印机队列管理系统&#xff0c;无论有多少员工提交打印任务&#xff0c;大家的请求都汇总到唯一的打印管理中心&#xff0c;按顺序排队输出。这个中心必须全局唯一&#xff0c;避免多个队列出现资源冲突&#xff0c;保证打印任务井然有序。…

基于Transformer的编码器-解码器图像描述模型在AMD GPU上的应用

Transformer based Encoder-Decoder models for image-captioning on AMD GPUs — ROCm Blogs 图像描述&#xff0c;即基于生成式人工智能&#xff08;GenAI&#xff09;自动生成简洁的图像文本描述&#xff0c;在现实世界中有着非常重要的应用。例如&#xff0c;图像描述可以为…

Python爬虫——猫眼电影

用python中requests库爬取猫眼电影信息并保存到csv文件中 猫眼专业版 爬取界面 效果预览 代码 import requests import jsonurl1https://piaofang.maoyan.com/dashboard-ajax?orderType0&uuid1938bd58ddac8-02c2bbe3b009ed-4c657b58-144000-1938bd58ddac8&timeStamp…

非对称任意进制转换器(安卓)

除了正常进制转换&#xff0c;还可以输入、输出使用不同的数字符号&#xff0c;达成对数值进行加密的效果 点我下载APK安装包 使用unity开发。新建一个c#代码文件&#xff0c;把代码覆盖进去&#xff0c;再把代码文件添加给main camera即可。 using System.Collections; usin…

【HarmonyOS】鸿蒙应用地理位置获取,地理名称获取

【HarmonyOS】鸿蒙应用地理位置获取&#xff0c;地理名称获取 一、前言 首先要理解地理专有名词&#xff0c;当我们从系统获取地理位置&#xff0c;一般会拿到地理坐标&#xff0c;是一串数字&#xff0c;并不是地理位置名称。例如 116.2305&#xff0c;33.568。 这些数字坐…

OpenGL ES详解——文字渲染

目录 一、文字渲染 二、经典文字渲染&#xff1a;位图字体 1.概念 2.优缺点 三、现代文字渲染&#xff1a;FreeType 1.着色器 2.渲染一行文字 四、关于未来 一、文字渲染 当你在图形计算领域冒险到了一定阶段以后你可能会想使用OpenGL来绘制文字。然而&#xff0c;可能…

C++设计模式之外观模式

动机 下图中左边方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合&#xff0c;随着外部客户程序和各子系统的演化&#xff0c;这种过多的耦合面临很多变化的挑战。 如何简化外部客户程序和系统间的交互接口&#xff1f;如何将外部客户程序的演化和内部子系统…

【Redis篇】 List 列表

在 Redis 中&#xff0c;List 是一种非常常见的数据类型&#xff0c;用于表示一个有序的字符串集合。与传统的链表结构类似&#xff0c;Redis 的 List 支持在两端进行高效的插入和删除操作&#xff0c;因此非常适合实现队列&#xff08;Queue&#xff09;和栈&#xff08;Stack…

RE逆向基础知识及常见题型

通用寄存器 FAX: &#xff08;针对操作数和结果数据的&#xff09;累加器EBX: &#xff08;DS段的数据指针&#xff09;基址寄存器ECX: &#xff08;字符串和循环操作的&#xff09;计数器EDX: &#xff08;I/O指针&#xff09;数据寄存器ESI: &#xff08;字符串操作源指针&a…

APM装机教程(四):山鹰H743飞控四旋翼装机

文章目录 前言一、飞控说明书二、接线三、参数设置四、电机接线和转向 前言 固件版本&#xff1a;Copter 4.5.7 地面站&#xff1a;QGC 遥控器&#xff1a;云卓T10 飞控&#xff1a;山鹰H743 GPS&#xff1a;微空M9 这个飞控的原理图是开源的&#xff0c;网盘链接&#xff1a;…

实验四:MyBatis 的关联映射

目录&#xff1a; 一 、实验目的&#xff1a; 熟练掌握实体之间的各种映射关系。 二 、预习要求&#xff1a; 预习数据库原理中所讲过的一对一、一对多和多对多关系 三、实验内容&#xff1a; 1. 查询所有订单信息&#xff0c;关联查询下单用户信息(注意&#xff1a;因为一…