Linux教程之文本处理(sed,xargs,wc)

2023-11-08

Linux教程之文本处理(sed,xargs,wc)

适用于 ubuntu 20.04
ubuntu 20.04 是 “西柚云” 主要使用的操作系统 西柚云官网

sed

sed 可以对文件中的文本内容进行过滤和修改,它的原理是逐行读入文本内容,根据模式匹配符合条件的文本,然后做操作。

# 向 xiyou.txt 文件写入多行内容
cat > xiyou.txt << EOF
x
y
XIYOU.
xiyou.
952
9527
9527777
95277777777777777777777
9527xiyou.

 xiyoucloud. xiyou.
xiyouyun or xiyoucloud
xiyouyun to be xiyouyun
EOF

sed [参数] [内置命令] 文件路径

参数:

  • n 取消默认的 sed 输出,sed 默认会输出处理后的文本信息
  • i 将做的修改写入文件,默认在终端展示修改效果而不写入文件,设计到修改文件的操作都要使用这个参数
  • e 一次性做多次编辑
  • r 对正则表达式提供更好的支持

内置命令:

  • a append 在某行的后面追加内容
  • i insert 在某行的前面插入内容
  • d delete 删除符合条件的行
  • p print 打印符合条件的行
  • s/模式/替换文本:将模式匹配到的字符替换为其他字符

范围:默认全文,指定某行,指定范围行,匹配行

# 输出文件的从第2行到第5行的内容
sed -n '1 p' xiyou.txt
sed -n '2,5 p' xiyou.txt
sed -n '1~2 p' xiyou.txt
# 输出包含有 xiyou 的行(过滤)
sed -n '/xiyou/ p' xiyou.txt

# 增加文件内容(2种方式)
sed -i '1 a 在第 1 行的后面增加的文本内容' xiyou.txt
sed -i '1 i 在第 1 行的前面增加的文本内容' xiyou.txt
sed -i 'a ---------------' xiyou.txt
# 删除文件内容,删除第 1 行到第 3 行的内容
sed -i '1,3 d' xiyou.txt
# 替换匹配模式, g表示全部替换,默认只替换匹配到的第 1 个
sed -i 's/xiyou/西柚/g' xiyou.txt
# 一次性做两次替换
sed -i -e 's/9/九/g' -e 's/5/五/g' xiyou.txt

补充内容

xargs, 一个用于传递参数的命令。xargs 会将标准输入的文本内容聚合后通过 echo 输出。多行内容会被输出为 1 行内容。因此通常用来构造单行命令。

# <<< 可以给 xargs 提供标准输入
xargs <<< "1 2 3 4"
cat xiyou.txt | xargs

# n 指定每行最多输出指定个数的参数
cat xiyou.txt | xargs -n 3
# I 可以指定一个符号用于参数的替换
cat xiyou.txt | xargs -I {} echo "hello, {}" 

# 删除目录下所有的 txt 文件,-0 表示以 \0 做分隔符
find . -type f -name "*.txt" -print0 | xargs -0 rm -f
# 将当前目录下的以 py 结尾的文件移到 xiyou 目录中
mkdir xiyou && touch {1..9}.py && ls
ls *.py | xargs -I {} mv {} xiyou
# 打包当前目录下所有的 png 文件
touch {1..100}.png
find . -type f -name "*.png" -print | xargs tar -czvf images.tar.gz

统计文本内容 wc

# 统计文件中的文本信息(行数,单词数,字节数,文件名)
wc xiyou.txt
# 统计文件中文本的行数
wc -l xiyou.txt
# 统计文件名以 txt 结尾的文本的行数
wc -l *.txt

# 统计目录下的文件大小小于10M 的文件的文本内容信息()
find . -type f -size -10M | xargs wc ;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux教程之文本处理(sed,xargs,wc) 的相关文章

  • “make install”将库安装在 /usr/lib 而不是 /usr/lib64

    我正在尝试在 64 位 CentOS 7 2 上构建并安装一个库 为了这个目的我正在跑步 cmake DCMAKE BUILD TYPE Release DCMAKE INSTALL PREFIX usr DCMAKE C COMPILER
  • 按进程名称过滤并记录 CPU 使用情况

    Linux 下有选项吗顶部命令 https www man7 org linux man pages man1 top 1 html我可以在哪里按名称过滤进程并将每秒该进程的 CPU 使用情况写入日志文件 top pgrep 过滤输出top
  • 如何减去两个 gettimeofday 实例?

    我想减去两个 gettimeofday 实例 并以毫秒为单位给出答案 这个想法是 static struct timeval tv gettimeofday tv NULL static struct timeval tv2 gettime
  • 在两次之间每分钟执行一次 Cronjob

    我需要在 crontab 中每分钟运行一个 bash 脚本8 45am and 9 50am每天的 Code 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 8 home pull sh gt ho
  • Bash 正则表达式——似乎无法匹配任何 \s \S \d \D \w \W 等

    我有一个脚本试图从 gparted 获取信息块 我的数据如下所示 Disk dev sda 42 9GB Sector size logical physical 512B 512B Partition Table msdos Number
  • Urwid:使光标不可见

    我正在使用 urwid 它是一个用于在 ncurses 中设计终端用户界面的 Python 框架 但有一件事我在 urwid 中无法做到 而这在 Curses 中很容易做到 使光标不可见 现在 选择按钮时光标是可见的 而且看起来很丑 有办法
  • Fortran gfortran linux 中的“分段错误(核心转储)”错误

    我正在创建一个程序 该程序将分析目录中的文件 fits 然后它将在另一个目录中创建另一个文件 txt 它只是一个转换器 当我尝试执行该程序 编译正常 时 它给了我一条错误消息 程序收到信号 SIGSEGV 分段错误 无效的内存引用 此错误的
  • 如何将 glob 表达式分配给 Bash 脚本中的变量?

    当在 bash 脚本中执行以下两行代码时 ls 会抱怨文件不存在 dirs content dev01 dev02 ls l dirs 当我使用 x 选项运行脚本时 它似乎在单引号内传递变量 这将防止通配 dirs content dev0
  • 在退出脚本之前等待后台进程完成

    在退出脚本 TCL Bash 之前 如何确保所有后台进程已完成执行 我正在考虑将所有后台进程 pid 写入 pid 文件 然后最后 pgrep pidfile 以查看在退出之前是否有任何进程仍在运行 有一些更简单的方法可以做到这一点吗 TC
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • git 错误:无法处理 https

    当我尝试使用 git clone 时https xxx https xxx我收到以下错误我不处理协议 https 有人可以帮我吗 完整消息 dementrock dementrock A8Se git 克隆https git innosta
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • 在 shell 脚本中将一个子字符串替换为另一个字符串

    我有 我爱苏子并结婚 我想将 苏子 更改为 萨拉 firstString I love Suzi and Marry secondString Sara 期望的结果 firstString I love Sara and Marry 要更换
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • 如何使用 sed 将空格替换为 \(space)?

    当我使用 sed 将所有空格替换为 X 时 该命令有效 命令为 sed s X g filelist tmp 但是 当我尝试用 space 替换所有出现的空格时 代码是 sed s g filelist tmp 这不起作用 我究竟做错了什么
  • 如何从 PROC 获取有关子进程的信息

    我正在尝试编写一个以几个进程作为参数的程序 然后父进程执行每个子进程并打印出一些相关的统计信息 示例 generate ls l 将生成一个程序 打印出有关 ls l 的一些统计信息 特别是其系统时间 用户时间和上下文切换次数 我不想使用
  • Gearman,php 扩展问题:使用终端在 .. 中找不到类“GearmanWorker”,但可以在浏览器上使用

    我最近在 ubuntu 10 04 上安装了 gearman 并安装了它的 pecl 扩展 现在 当我在浏览器中运行一个 php 文件时 其中包含 client new GearmanWorker die var Dump client I
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he
  • 数组上的 Bash 子字符串扩展

    我有一组带有给定后缀的文件 例如 我有一组带有后缀的pdf文件 pdf 我想使用子字符串扩展来获取不带后缀的文件名 对于单个文件我可以使用 file test pdf echo file 0 4 要对所有文件执行此操作 我现在尝试 file

随机推荐

  • 深度学习环境配置1——windows下的tensorflow-gpu=1.13.2环境配置

    深度学习环境配置1 windows下的tensorflow gpu 1 13 2环境配置 注意事项 一 2021 9 11更新 二 2021 7 8更新 三 2020 11 5更新 学习前言 环境内容 环境配置 一 Anaconda安装 1
  • Android - Session 'app': Error Installing APK或installaion failed intall_parse_failed_manifest_的解决方法

    在Android Studio中启动模拟器的时候偶尔会遇到以下的问题 1 installaion failed with message intall parse failed manifest malformed 2 Session ap
  • 【Linux:进程间信号】

    文章目录 1 生活角度的信号 2 技术应用角度的信号 3 信号的产生 3 1 由系统调用向进程发信号 3 1 1 signal 3 1 2 kill 3 1 3 raise 3 2 由软件条件产生信号 3 3 硬件异常产生信号 3 4 通过
  • Git使用操作规范

    一 创建自己的开发分支 1 1 配置Git环境 1 1 1 Windows平台上安装 1 1 2 Linux平台上安装 1 1 3 Mac平台上安装 1 1 4 基本概念名词解释 Git 工作区 暂存区和版本库 工作区 就是你在电脑里能看到
  • Unity UGUI 无限循环列表 ----------多功能版

    一共有四种 循环列表 如下图 1 常用循环列表 2 收展嵌套 循环列表 3 弹框 循环列表 4 翻页 循环列表 注意点 1 层次结构如下图 2 Content 和 Item 控件锚点必须为如图 使用方式 只举例常用列表 其他列表查看 GIt
  • JDE(Towards Real-Time Multi-Object Tracking)代码训练——小白必看

    前言 自己在跑JDE多目标跟踪代码时 总结的方法和教训 一 数据集制作 1 可直接下载作者给的数据集 是制作好的 论文链接 https arxiv org pdf 1909 12605v1 pdf 代码链接 https github com
  • 如何使用oracle修改表字段长度

    系列文章目录 ORACLE简介 Oracle是一种关系数据库管理系统 RDBMS 广泛应用于企业应用程序中 它是由甲骨文公司在20世纪70年代末开发的 自此成为世界上最流行的数据库系统之一 Oracle以其可扩展性 可靠性和安全性而闻名 它
  • USB无线网卡的用途及编程实现

    USB无线网卡是一种设备 它可以通过USB接口连接到计算机 并提供无线网络连接功能 在本文中 我们将探讨USB无线网卡的用途以及如何通过编程实现相关功能 用途 提供无线网络连接 USB无线网卡允许计算机通过无线信号连接到网络 这对于那些没有
  • 【Java】------- Base64格式图片保存到服务器文件

    一 使用技术 Java Springboot 二 代码实例 fun base64ToImage base64转成图片格式 提示 data image png base64 的前缀要去掉 param imgBase64 base64 数据 p
  • Griffin 数据管理任务的SQL和原理

    文章目录 各种Measure内部计算原理 accuracy completeness distinct timeliness uniqueness profiling spark sql pre proc Service 任务管理模块 配置
  • JUC常用到的类

    JUC java util concurrent 并发包中包含了许多并发编程中需要用到的类 锁 如ReentratLock ReadWriteLock ReentrantLock重入锁 可以替代synchronized使用 并且有更多强大的
  • 在windows内使用virtualbox搭建安卓x86--以及所遇到的问题解决--3

    一 ARM兼容包的植入 1 下载arm包 2 安装arm兼容包 3 验证arm兼容包是否移植成功 二 触屏无效 三 玩游戏卡顿严重 一 ARM兼容包的植入 在AndroidX86系统内大部分应用 国内 并没有适配X86架构 安装基于arm架
  • Python实验作业

    Python实验作业 1 实验题目 中文数字对照表 输入一个数字 转换成中文数字 比如 1234567890 gt 壹贰叁肆伍陆柒捌玖零 chinese number 零 壹 贰 叁 肆 伍 陆 柒 捌 玖 numeber input 请输
  • Vue-组件

    Vue 组件 组件之间的父子关系 使用组件的三个步骤 私有组件 通过components 注册的是私有子组件 全局组件 在vue 项目的main js 入口文件中 通过Vue component 方法 可以注册全局组件 import Vue
  • 【css面试题】实现2栏布局 右侧自适应; 3栏布局 中间自适应

    2栏布局 右侧自适应 flex grid table float div class son1 div
  • ROS 中写 python 的 roslaunch

    文章目录 1 必看教程 快速入门 1 1 快速入门ROS的视频教程 里面有一节是专门讲 roslaunch 的 https www bilibili com video av59458869 1 2 PDF文档 How to create
  • Chisel(四)Scala语法 操作符

    学习更多相关知识 关注博主知乎账号 用户名Trustintruth https www zhihu com people suo yi xin 90 activities Scala追求的是纯粹的面向对象 不推荐不属于面向对象的基本类型及其
  • UnityShader基础(五)——进阶纹理

    一 立方体纹理 立方体纹理是环境映射的一种实现方式 立方体纹理就是立方体的六个面 每个面有一个纹理 一般用于映射出物体周围环境 和基础纹理不同 采样立方体纹理需要一个三维坐标 而这个三维坐标由一条向量与立方体的交点构成 注意采样时 向量是由
  • 印度黑客号称世界第一,结果第二天被中国黑客干掉了

    以往中国黑客 俄罗斯黑客 美国黑客会不时出现在新闻头条里 但现在印度黑客也开始崛起 成为一股不可忽视的力量 由于历史原因 印度在经济上比较依赖欧美 经济联系也比较紧密 印度人在软件开发上有着语言上的优势 例如一个印度中学生把主要精力花在学软
  • Linux教程之文本处理(sed,xargs,wc)

    Linux教程之文本处理 sed xargs wc 适用于 ubuntu 20 04 ubuntu 20 04 是 西柚云 主要使用的操作系统 西柚云官网 sed sed 可以对文件中的文本内容进行过滤和修改 它的原理是逐行读入文本内容 根