牛客linux

news2024/12/23 23:01:00

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【unity小技巧】在 Unity 中,Application获取各种文件路径或访问不同类型的存储路径

文章目录 前言1. **Application.persistentDataPath**2. **Application.dataPath**3. **Application.streamingAssetsPath**4. **Application.temporaryCachePath**5. **Application.consoleLogPath**6. **Application.userDataPath**7. **Application.streamingAssetsPath 与 …

汇编语言学习-二

好吧&#xff0c;已经隔了两天&#xff0c;下完班看了两天&#xff0c;在电脑上装了虚拟机版的MS_DOS,主要是怕折腾坏我的电脑系统&#xff1b; 这个第二天应该是称为第二章更为合适&#xff0c;目前第二章已经看完&#xff0c;基本的命令也是敲了敲&#xff1b; 下面就进行一…

游戏引擎学习第33天

仓库: https://gitee.com/mrxiao_com/2d_game 位置表示的回顾 在之前的工作中&#xff0c;已经实现了将单位从像素空间转移到真实的空间&#xff0c;这样可以确保所有的动作和物体都按米为单位来进行。这个转变让游戏中的物体不再是基于像素的&#xff0c;而是按照真实世界的…

泷羽sec-burp(3)decodor comparer logger模块使用 学习笔记

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

vue-cli创建项目报错:command failed: npm install --loglevel error

网上解决方法有很多&#xff0c;对于我都没用。 最后用这个方法起了作用&#xff1a; 尝试将npm源设置为HTTP&#xff0c;慎用&#xff0c;可能不安全 npm config set registry http://registry.npm.taobao.org/ 改为http就顺利创建项目了。

《船舶物资与市场》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问&#xff1a;《船舶物资与市场》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《船舶物资与市场》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;中国船舶集团有限公司 主办单…

超详细MacBook Pro(M1)配置GO语言环境(图文超详细版)

前提 当我第一次使用MacBook配置Go语言环境时&#xff0c;网上的资料错综复杂&#xff0c;部分资料对于第一次使用MacBook的小白们非常不友好&#xff0c;打开终端时&#xff0c;终端的位置对应的访达中的位置不是很清楚&#xff0c;因此才有了这篇文章&#xff0c;该文章通过…

单端和差分信号的接线法

内容来源&#xff1a;【单端信号 差分信号与数据采集卡的【RSE】【 NRES】【 DIFF】 模式的连接】 此篇文章仅作笔记分享。 单端输入 单端信号指的是输入信号由一个参考端和一个信号端构成&#xff0c;参考端一般是地端&#xff0c;信号就是通过计算信号端口和地端的差值所得…

前端开发 之 15个页面加载特效中【附完整源码】

前端开发 之 15个页面加载特效中【附完整源码】 文章目录 前端开发 之 15个页面加载特效中【附完整源码】八&#xff1a;圆环百分比加载特效1.效果展示2.HTML完整代码 九&#xff1a;毒药罐加载特效1.效果展示2.HTML完整代码 十&#xff1a;无限圆环加载特效1.效果展示2.HTML完…

【H2O2|全栈】Node.js与MySQL连接

目录 前言 开篇语 准备工作 初始配置 创建连接池 操作数据库 封装方法 结束语 前言 开篇语 本节讲解如何使用Node.js实现与MySQL数据库的连接&#xff0c;并将该过程进行函数封装。 与基础部分的语法相比&#xff0c;ES6的语法进行了一些更加严谨的约束和优化&#…

spark-sql配置教程

1.前期准备 &#xff08;1&#xff09;首先要把hadoop集群&#xff0c;hive和spark等配置好 hadoop集群&#xff0c;hive的配置可以看看这个博主写的博客 大数据_蓝净云的博客-CSDN博客 或者看看黑马程序员的视频 黑马程序员大数据入门到实战教程&#xff0c;大数据开发必…

【网络安全】网站常见安全漏洞 - 网站基本组成及漏洞定义

文章目录 引言1. 一个网站的基本构成2. 一些我们经常听到的安全事件3. 网站攻击者及其意图3.1 网站攻击者的类型3.2 攻击者的意图 4. 漏洞的分类4.1 按来源分类4.2 按危害分类4.3 常见漏洞与OWASP Top 10 引言 在当今的数字化时代&#xff0c;安全问题已成为技术领域不可忽视的…

【最新免费PPT制作并下载】Kimi PPT助手:智能化演示文稿生成,职场效率的革命性提升

最新免费PPT制作方法在这里&#xff01;下面我想向大家介绍一款能够极大提升我们工作效率的工具——Kimi PPT助手。 Kimi PPT助手&#xff1a;智能化演示文稿生成 Kimi PPT助手是由Moonshot AI推出的一款革命性产品&#xff0c;它通过人工智能技术&#xff0c;实现了PPT的一键…

黑马微服务开发与实战学习笔记_MybatisPlus_P1介绍与快速入门

系列博客目录 文章目录 系列博客目录MybatisPlus介绍快速入门Part1:入门案例Part1.1:MyBatis项目Part1.2:实现MP Part2:常见注解Part2.1:约定Part2.2:常见注解 Part3:常见配置MyBatisPlus使用的基本流程是什么? MybatisPlus介绍 在Mybatis上加了Plus&#xff0c;表示对Mybati…

多模态大语言模型的对比

简介 文章主要对比了包括 VideoLLaMA 2 、CogVLM2-video 、MiniCPM-V等模型 目前主流的多模态视觉问答大模型&#xff0c;大部分采用视觉编码器、大语言模型、图像到文本特征的投影模块 目录 简介1. VideoLLaMA 21.1 网络结构1.2 STC connector具体的架构 2. MiniCPM-V 2.62.…

Docker Compose 和 Kubernetes 之间的区别?

一、简介&#x1f380; 1.1 Docker Compose Docker Compose 是 Docker 官方的开源项目&#xff0c;负责实现对 Docker 容器集群的快速编排&#xff0c;可以管理多个 Docker 容器组成一个应用。你只需定义一个 YAML 格式的配置文件 docker-compose.yml &#xff0c;即可创建并…

小迪安全笔记 第四十四天 sql盲注 实战利用sql盲注 进行漏洞的利用

sql盲注的分类 什么是盲注 就是我们什么也不知道的情况下进行的注入 前边的注入 都是简单的注入 我们猜测 数据类型 之后 可以直接 union 去查 这种情况多用于 数据库增删查改中的 查 bool盲注也用于查 这个的情况的就是我们前边都试了 没有用 就需要…

FFmpeg:强大的音视频处理工具指南

FFmpeg&#xff1a;强大的音视频处理工具指南 1. FFmpeg简介2. 核心特性2.1 基础功能2.2 支持的格式和编解码器 3. 主要组件3.1 命令行工具3.2 开发库 4. 最新发展5. 安装指南5.1 Windows系统安装5.1.1 直接下载可执行文件5.1.2 使用包管理器安装 5.2 Linux系统安装5.2.1 Ubunt…

Cursor+Devbox AI开发快速入门

1. 前言 今天无意间了解到 Cursor 和 Devbox 两大开发神器,初步尝试以后发现确实能够大幅度提升开发效率,特此想要整理成博客以供大家快速入门. 简单理解 Cursor 就是一款结合AI大模型的代码编辑器,你可以将自己的思路告诉AI,剩下的目录结构的搭建以及项目代码的实现均由AI帮…

MySQL——操作

一.库的操作 1.基本操作 创建数据库 create database 数据库名称; 查看数据库 show databases; 删除数据库 drop database 数据库名称; 执行删除之后的结果: 数据库内部看不到对应的数据库 对应的数据库文件夹被删除&#xff0c;级联删除&#xff0c;里面的数据表全部被删…