当前位置: 首页 > news >正文

shell学习4

目录

一、统计文本中的词频

二、压缩javascript

三、打印文件的或行中的第n个单词或列---awk

3.1 利用awk打印文件中每行中的第五个单词。

3.2 利用awk打印当前目录下的文件的权限和文件名

3.3 利用awk打印从M行到N行这个范围内的所有文本

3.4 利用awk 部分提取文件中的内容

3.5 利用awk 逆序打印

四、解析文本中的电子邮件地址和URL---egrep

五、在文件中移除包含某个单词的句子---sed

5.1 删除包含“mobile phones” 的句子

5.2 对目录中的所有文件进行文本替换


一、统计文本中的词频

#!/bin/bash
if [ $# -ne 1 ];
then
echo "用法错误,请按照这样使用:./ceshi.sh word.txt";
exit -1
fi
filename=$1 
egrep -o "\b[[:alpha:]]+\b" $filename | \  
awk '{ count[$0]++ }
END{ printf("%-14s%s\n","Word","Count") ;
for(ind in count)
{ printf("%-14s%d\n",ind,count[ind]); }
}'

①[ $# -ne 1 ] : 如果传递给脚本的参数不是1

②$1传递给脚本的第一个参数,$0就是脚本本身 

③-o 表示只匹配本身。

egrep -o "\b[[:alpha:]]+\b" $filename 只用于输出单词。用 -o 选项打印出由换行符分隔的匹配字符序列。这样我们就可以在每行中列出一个单词。
\b 是单词边界标记符。 [:alpha:] 是表示字母的字符类。 awk 命令用来避免对每一个单词
进行迭代。因为 awk 默认会逐行执行 {} 块中的语句,所以我们就不需要再为同样的事编写循环了。
借助关联数组,当执行 count[$0]++ 时,单词计数就增加。最后,在 END{} 语句块中通过迭代所有的单词,就可以打印出单词及它们各自出现的次数。


二、压缩javascript

cat sample.js |  tr -d '\n\t' |  tr -s ' ' |  sed 's:/\*.*\*/::g' |  sed 's/ \?\([{}();,:]\) \?/\1/g'

tr  -s   删除所有重复出现的字符序列

tr -d    删除字符串中出现的所有字符

tr -d '\n\t' :移除 '\n' 和 '\t'
tr -s '  ':移除多余的空格

sed 's:/\*.*\*/::g':移除注释

因为我们需要使用 /* 和 */ ,所以用 : 作为 sed 的定界符,这样就不必对 / 进行转
义了。
* 在 sed 中被转义为 \* 。
.* 用来匹配 /* 与 */ 之间所有的文本。

sed 's/ \?\([{}();,:]\) \?/\1/g' :移除 { } ( ) ;: 以及 , 前后的空格。(去掉标红符号前后的空格)

 sed 代码中的 / \?\([{ }();,:]\) \?/ 用于匹配, /\1/g 用于替换。
 \([{ }();,:]\) 用于匹配集合 [ { }( ) ; , : ] (出于可读性方面的考虑,
在这里加入了空格)中的任意一个字符。 \( 和 \) 是分组操作符,用于记忆所匹配的
内容,以便在替换部分中进行向后引用。对 ( 和 ) 转义之后,它们便具备了另一种特
殊的含义,进而可以将它们作为分组操作符。位于分组操作符前后的 \? 用来匹配
可能出现在字符集合前后的空格。
 在命令的替换部分,匹配字符串(也就是一个可选的空格、一个来自字符集的字
符再加一个可选的空格)被匹配的子字符串所替换。对于匹配的子字符串使用了
向后引用,并通过分组操作符 () 记录了匹配内容。可以用符号 \1 向后引用分组
所匹配的内容。


三、打印文件的或行中的第n个单词或列---awk

3.1 利用awk打印文件中每行中的第五个单词。

3.2 利用awk打印当前目录下的文件的权限和文件名

3.3 利用awk打印从M行到N行这个范围内的所有文本

3.4 利用awk 部分提取文件中的内容

3.5 利用awk 逆序打印

NR:是总共读取了多少行

这个 awk 脚本非常简单。我们将每一行都存入一个关联数组中,用行号作为数组索引(行
号由 NR 给出),最后由 awk 执行 END 语句块。为了得到最后一行的行号,在 { } 语句块中使用
lno=NR 。因此,这个脚本从最后一行一直迭代到第0行,将存储在数组中的各行以逆序方式
打印出来。


四、解析文本中的电子邮件地址和URL---egrep

电子邮件:

URL:

因为用到了扩展正则表达式(例如+),所以得使用 egrep 命令

.  匹配任意一个字符 

\. 用来匹配点字符,而不是任何字符的通配符。

 [a-zA-Z]{2,4} 表示字母的长度应该在2到4之间(包括2和4)。eg:cn、com、edu


五、在文件中移除包含某个单词的句子---sed

5.1 删除包含“mobile phones” 的句子

文本内容要保证在在同一行。

 该正则表达式的格式为: 's/ 匹配模式/替代字符串 /g' 。

这里的匹配模式是用来匹配整句文本的正则表达式。文件中的每一句话第一个字符都是空
格,句与句之间都以“ . ”来分隔。因此我们需要匹配内容的格式就是:空格+若干文本+需要匹
配的字符串+若干文本+句点。一个句子除了作为定界符的句点之外,可以包含任意字符。因此我
们要使用 [^.] 。 [^.]* 可以匹配除句点之外的任何字符的组合。用来匹配文本的“mobile phone”
被放置在两个 [^.]* 之间。每一个匹配的句子均被 // 替换(注意, / 与 / 之间没有任何内容)。

5.2 对目录中的所有文件进行文本替换

将所有.cpp文件中的 Copyright 替换成 Copyleft.

 我们使用 find 在当前目录下查找所有的.cpp文件,然后使用 print0 打印出以null字符( \0 )作为分隔符的文件列表。(这可以避免文件名中的空格所带来的麻烦。)接着使用通道将列表传递
给 xargs ,后者将对应的文件作为 sed 的参数,由 sed 对文件内容进行修改。

相关文章:

shell学习4

目录 一、统计文本中的词频 二、压缩javascript 三、打印文件的或行中的第n个单词或列---awk 3.1 利用awk打印文件中每行中的第五个单词。 3.2 利用awk打印当前目录下的文件的权限和文件名 3.3 利用awk打印从M行到N行这个范围内的所有文本 3.4 利用awk 部分提取文件中的内…...

VR全景行业的应用价值如何呈现?

互联网高速发展的今天,多媒体所包含的种类也是越来越多,而一些较为传统的表现方式已经越来越无法满足大部分客户对展示方式的要求。而在传统的表现方式中,展现的方式无非是静态的平面图片以及动态的视频,但是他们都有一个缺点就是…...

ESP-IDF:TCP多线程并发服务器

核心代码&#xff1a; 核心思想就是主线程只处理socket监听功能&#xff0c;把数据处理部分分配到不同的线程中去处理。来了一个客户端连接&#xff0c;就分配新的线程去处理该客户端的数据请求。 代码&#xff1a; /多线程并发服务器/ #include <stdio.h> #include …...

Springboot扩展点之SmartInitializingSingleton

前言这篇文章会重点分析一下SmartInitializingSingleton扩展点的功能 特性、实现方式 、工作原理。SmartInitializingSingleton扩展点内只有一个扩展方法&#xff0c;且执行时机在Spring Bean的生命周期里比较靠后&#xff0c;很重要&#xff0c;但是也很简单。功能特性1、Smar…...

基于linux内核的驱动开发学习

1 驱动 定义&#xff1a;驱使硬件动起来的程序 种类&#xff1a;裸机驱动&#xff1a;需求分析--》查原理图--》查芯片手册--》code 系统驱动&#xff1a;需求分析--》查原理图--》查芯片手册--》设备树--》code --》安装到内核中…...

python3 django gunicorn

首先&#xff0c;Gunicorn是一个高效的Web服务器&#xff0c;地位相当于Java中的Tomcat。简单来说gunicorn封装了HTTP的底层实现&#xff0c;我们通过gunicorn启动服务&#xff0c;用户请求与服务相应都经过gunicorn传输。下载gunicorn的方法也比较简单&#xff0c;在django工程…...

专家分享 | 租赁型售楼处标准化示范区提效研究

2023年2月8日上午&#xff0c;优积科技邀请原金地集团北京公司 高级室内设计专业应锎经理为我司团队分享《租赁型售楼处标准化示范区提效》的专题。 此次专家分享课题加上大家踊跃讨论时间长达3小时&#xff0c;会上应总详细介绍了租赁型售楼处标准化示范区提效&#xff0c;需…...

linux之echo使用技巧

参考文章&#xff1a;linux基本功系列-echo命令实战一、echo 命令是什么&#xff1f;作用&#xff1a; echo命令能将指定文本显示在Linux命令行上&#xff0c;或者通过重定向符写入到指定的文件中。语 法&#xff1a;echo [-ne][字符串] / echo [–help][–version]补充说明&am…...

Keras实例教程(7)之构建模型的第三种方式

多年以前,在TensorFlow中搭建深度学习模型对于很多人来说其实仍然是比较困难的。相比之下,Keras作为独立于TensorFlow的一种深度学习框架则要简单很多。在TensorFlow与PyTorch的竞争中逐渐式微的情况下,TensorFlow团队终于宣布Keras将成为在tensorflow2.0中构建和训练模型的…...

【JUC并发编程】18 CopyOnWriteArrayList源码也就够看2分钟

文章目录1、CopyOnWriteArrayList概述2、原理 / 源码1&#xff09;构造函数2、add()3&#xff09;get()4&#xff09;remove()5&#xff09;iterator()1、CopyOnWriteArrayList概述 CopyOnWriteArrayList相当于线程安全的ArrayList&#xff0c;底层是一个可变数组。 特点如下…...

如何优雅的实现回调函数?

本篇文章又是一期优雅的代码编程介绍———回调函数。 传统的nodejs编程都是这样的 const fs require(fs) fs.readFile(test.txt,utf8, function(err, dataStr){if(err){} }) 嵌套层级如果多了就成回调地狱了。如果我们将这种风格的代码转换成这样呢&#xff1f; const fs …...

3GPP-NR Band20标准定义频点和信道(3GPP V17.7.0 (2022-12))

Reference test frequencies for NR operating band n20 Table 4.3.1.1.1.20-1: Test frequencies for NRoperating band n20 and SCS 15 kHz CBW [MHz]carrierBandwidth...

Excel表格的公式不想显示出来,可以这样操作

在制作Excel表格的时候&#xff0c;很多人做数据会用到函数公式&#xff0c;这些编辑都是默认可以看到的。 但有时候我们不想让他人看到自己的计算思路和所用公式&#xff0c;有没有办法可以隐藏公式&#xff0c;只显示数据呢&#xff1f;答案是肯定的&#xff0c;今天我们就来…...

【零基础入门前端系列】—语义化标签、实体字符、视频、音频(八)

【零基础入门前端系列】—语义化标签、实体字符、视频、音频&#xff08;八&#xff09; 一、什么是HTML语义化标签 语义化的标签&#xff0c;旨在让标签有自己的含义 如上代码&#xff1a;p标签与span标签的区别之一就是&#xff0c;p标签的含义是段落而span标签没有独特的…...

超详细讲解线性表和顺序表!!

超详细讲解线性表和顺序表&#xff01;&#xff01;线性表顺序表顺序表的概念及结构静态顺序表动态顺序表顺序表接口实现1、创建2、初始化3、扩容4、尾插5、打印6、销毁7、尾删8、头插9、头删10、插入任意位置11、删除任意位置12、查找13、修改线性表 线性表&#xff08;linea…...

大数据之-Nifi-Nifi的安装_启动_认识Nifi的操作台---大数据之Nifi工作笔记0002

然后我们看一下如何安装nifi 这个上一节已经说了 然后看一下环境准备,这个自己去安装就可以了,需要jdk,1.8就可以了,然后 maven安装上就可以了 然后去下载,这里下载Linux版本的 1.9.2的版本比较稳定 下载以后,避免端口冲突要修改端口默认是8080,修改为58080 然后启动很简单,看…...

【大数据clickhouse】clickhouse 常用查询优化策略详解

一、前言 在上一篇我们分享了clickhouse的常用的语法规则优化策略&#xff0c;这些优化规则更多属于引擎自带的优化策略&#xff0c;开发过程中只需尽量遵守即可&#xff0c;然而&#xff0c;在开发过程中&#xff0c;使用clickhouse更多将面临各种查询sql的编写甚至复杂sql的…...

【Java项目】基于Java+MySQL+Tomcat+maven+Servlet的个人博客系统的完整分析

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【Java项目】 ✈️✈️本篇内容:个人博客系统前后端分离实现&#xff01; &#x1f680;&#x1f680;个人代码托管github&#xff1a;博客系统源码地址&#xff…...

java 程序员怎么做找工作

java 程序员怎么做找工作 在网络招聘网站上搜索职位。在中国&#xff0c;像智联招聘、前程无忧、猎聘网等招聘网站上&#xff0c;有许多公司在招聘JAVA程序员。通过这些网站可以快速找到自己合适的工作。 关注社交媒体和专业网站。 加入一些面向JAVA程序员的社交媒体和专业网…...

S7-1200对于不同项目下的PLC之间进行开放式以太网通信的具体方法示例

S7-1200对于不同项目下的PLC之间进行开放式以太网通信的具体方法示例 如下图所示,打开TIA博途创建一个新项目,并通过“添加新设备”组态 S7-1200 客户端 ,选择 CPU1214C DC/DC/DC (client IP:192.168.0.102),建立新子网; 首先编写客户端程序:打开OB1编程界面,选择指令…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代&#xff0c;数据已成为企业和社会发展的核心资产&#xff0c;而数据库作为存储、管理和处理数据的关键工具&#xff0c;在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理&#xff0c;到社交网络的用户数据存储&#xff0c;再到金融行业的交易记录处理&a…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇

根据 QYResearch 发布的市场报告显示&#xff0c;全球市场规模预计在 2031 年达到 9848 万美元&#xff0c;2025 - 2031 年期间年复合增长率&#xff08;CAGR&#xff09;为 3.7%。在竞争格局上&#xff0c;市场集中度较高&#xff0c;2024 年全球前十强厂商占据约 74.0% 的市场…...