我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Shell脚本如何实现文本处理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Shell脚本如何实现文本处理

这篇文章给大家分享的是有关Shell脚本如何实现文本处理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

4.1 排序文本

4.1.1 行的排序
未提供命令行选项时,整个记录会根据当前locale所定义的次序排序。
在传统的C locale中,也就是ASCII顺序。

4.1.2 以字段排序
-k选项的后面接着的是一个字段编号,或者是一对数字。
每个编号后面都可以接一个点号的字符位置,或修饰符字母。

如果仅指定一个字段编号,则排序键值会自该字段的起始处开始,
一直继续到记录的结尾(而非字段的结尾)。

如果给的是一对用逗号隔开的字段数字,则排序键值将由第一个字段值的起始处开始,
结束于第二个字段值的结尾。使用点号表示字符位置。
-k2.4, 5.6指的是从第二个字段的第四个字符开始比较,一直比到第五个字段的第六个字符。
$ sort -t: -k1,1 /etc/passwd     以用户名称排序
bin:x:1:1:bin:/bin:/sbin/nologin
chico:x:12501:1000:Chico Marx:/home/chico:/bin/bash
harpo:x:12502:1000:Harpo Marx:/home/harpo:/bin/ksh
...

$ sort -t: -k3,3nr /etc/passwd     反省UID排序
或-k3nr,3或-k3,3 -n -r都可以。

4.1.3 文本块的排序
有时需要对多行记录组合而成的数据排序。以地址清单为例:
$ cat my-friends
# SORTKEY: Schlo, Hans Jurgen
Hans Jurgen Schlo
Unter den Linden 78
D-10117 Berlin
Germany

# SORTKEY: Jones, Adrian
...

技巧是:利用awk识别段落间隔,在每个地址内暂时使用一个未用过的字符取代分行。
sort看到的行就会变成这样:
# SORTKEY: Schlo, Hans Jurgen^ZHans Jurgen Schlo^ZUnter den Linden 78^Z...
cat my-friends |               读取地址文件
     awk -v RS=" " '{ gsub("\n", "^Z"); print }' |    转换地址为单行
          sort -f |           排序地址数据,忽略大小写
               awk -v ORS="\n\n" '{ gsub("^Z", "\n"); print }' |  恢复行结构
                    grep -v '# SORTKEY'   删除标记行
1. 函数gsub()为全局性替换(global substitution),类似sed下的s/x/y/g结构。
2. RS变量时输入数据的记录分隔器(Record Separator)。
   通常输入数据以换行隔开,使每行成为单个记录。
    RS=" "是一个特殊用法,指的是记录以空行隔开。
3. ORS是输出记录分隔器。
注:'{ action }'是对每个字段的操作,而RS,ORS都是对记录的设定。

1.5 sort的稳定性
sort并不稳定。

4.2 删除重复
sort -u是依据匹配的键值进行消除操作,而非匹配的记录。
uniq有3个好用选项:
     -c在每个输出行之前加上该行重复的次数。
     -d则用于仅显示重复的行。
     -u仅显示未重复的行。

4.3 重新格式化段落
fwt -w 30

4 计算行数、字数以及字符数
wc的默认输出是一行报告,包括行数、字数以及字节数。
可用选项:-c(字节数)、-l(行数)、-w(字数)。

代码如下:


$ echo Testing one two three | wc -c
1 4 22
$ wc /etc/passwd /etc/group



4.6 提取开头或结尾数行
显示文件列表中每一个的前n条记录:
head -n n [file(s)]
head -n [file(s)]
awk 'FNR <= n' [file(s)]
sed -e nq [file(s)]
sed nq [file(s)]

观察不断增长的系统信息日志,Ctrl-C停止tail。

代码如下:


$ tail -n 25 -f /var/log/messages

感谢各位的阅读!关于“Shell脚本如何实现文本处理”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Shell脚本如何实现文本处理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Shell脚本如何实现文本处理

这篇文章给大家分享的是有关Shell脚本如何实现文本处理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。4.1 排序文本4.1.1 行的排序未提供命令行选项时,整个记录会根据当前locale所定义的次序排序。在传统
2023-06-09

Shell脚本如何逐行处理文本文件

经常会对文体文件进行逐行处理,在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理.有多种解决方法如下: 1.通过read命令完成. read 命令从标准输入中读取一行,并把输入行的每
2022-06-04

如何实现Shell脚本逐行读取文本文件

这篇文章主要介绍“如何实现Shell脚本逐行读取文本文件”,在日常操作中,相信很多人在如何实现Shell脚本逐行读取文本文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何实现Shell脚本逐行读取文本文件
2023-06-09

如何使用shell脚本循环处理文本的问题

这篇文章主要介绍如何使用shell脚本循环处理文本的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!公司是使用puppet来进行配置管理, 某天修改完puppet后领导回复:我们有一个文档cabinet.txt记录
2023-06-15

如何实现Shell菜单脚本

这篇文章将为大家详细讲解有关如何实现Shell菜单脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。编写的Shell菜单脚本,傻瓜式的人机交互,人人都可以操作linux。#!/bin/sh#Shell菜单
2023-06-09

Shell脚本注释如何实现

这篇文章主要介绍了Shell脚本注释如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Shell脚本注释如何实现文章都会有所收获,下面我们一起来看看吧。单行注释直接在行最前端加上符号 # 即可。具体用法如下
2023-07-05

Java 如何实现对 shell 脚本的调用?(java如何调用shell脚本)

在Java开发中,有时需要调用shell脚本以完成一些特定的任务,比如系统管理、文件处理等。下面将详细介绍Java如何调用shell脚本的步骤。一、准备工作确保系统中已经安装了所需的shell环境
Java 如何实现对 shell 脚本的调用?(java如何调用shell脚本)
Javashell2024-12-14

写一个shell脚本实现视频处理

目录需求视频处理 ffmpeg裁剪格式转换配置参数sed命令读取时间切片csv转换视频格式上传七牛end需求 去年同事准备做个公司内部的大讲堂网站,将一些内部培训的视频汇总,提供给公司同事观看,网站搭建相对来说比较简单,直接用Ant.des
2022-07-08

Shell脚本中如何实现DNS主从同步脚本

这篇文章给大家分享的是有关Shell脚本中如何实现DNS主从同步脚本的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。DNS主从同步脚本实例PS:两个服务器起好后最好两个服务都重启一下主服务器配置#!/bin/bas
2023-06-09

PHP中如何处理Shell脚本错误?

PHP中如何处理Shell脚本错误?在PHP中执行Shell脚本是一种常见的操作,它可以扩展PHP的功能,实现更多的操作。然而,当执行Shell脚本时,可能会遇到错误。在这种情况下,我们需要适当地处理这些错误,以保证代码的稳定性和正确性。在
PHP中如何处理Shell脚本错误?
2023-12-09

使用Shell脚本怎么逐行处理文本文件

使用Shell脚本怎么逐行处理文本文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.通过read命令完成.read 命令从标准输入中读取一行,并把输入行的每
2023-06-14

如何实现Linux Shell脚本调试

这篇文章主要讲解了“如何实现Linux Shell脚本调试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现Linux Shell脚本调试”吧!一、调试脚本调试功能是每一种编程语言都应该
2023-06-09

Shell脚本中如何实现循环

这篇文章主要介绍了Shell脚本中如何实现循环,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。for 循环Shell 脚本里最简单的循环当属 for 循环,有编程基础的朋友应该
2023-06-16

shell脚本如何实现本地文件与服务器文件同步

这篇文章将为大家详细讲解有关shell脚本如何实现本地文件与服务器文件同步,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。为何创建此脚本是因为方便项目的布署,不需要手动地去同步不同的项目,而只需要简单的执行
2023-06-09

Shell脚本学习指南之文本处理工具

4.1 排序文本 4.1.1 行的排序未提供命令行选项时,整个记录会根据当前locale所定义的次序排序。在传统的C locale中,也就是ASCII顺序。 4.1.2 以字段排序-k选项的后面接着的是一个字段编号,或者是一对数字。每个编号
2022-06-04

shell脚本实现文件锁功能

1.背景当多个进程可能会对同样的数据执行操作时,这些进程需要保证其它进程没有在操作,以免损坏数据。通常,这样的进程会使用一个“锁文件”,也就是建立一个文件来告诉别的进程自己在运行,如果检测到那个文件存在则认为有操作同样数据的进程在工作。这样
2022-06-04

如何理解Linux Shell脚本

本篇内容介绍了“如何理解Linux Shell脚本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Shell简介诸多类Unix操作系统的设
2023-06-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录