Shell中如何删除文本比较长的行的实现方法

 Shell中如何删除文本比较长的行的实现方法

有的时候需要对文件执行删除删除操作,这个时候比较常用的会使用vi命令中的dd命令,比如先执行10G(跳转到第10行),然后再执行20dd(删除20行),但实际情况未必是这么常规,比如说,要删除文件中,某行长度超过200个字符的行,如果文本比较小,还好,如果是几万行,几十万行的呢? 这个想用vi就不现实了。 我然想到的办法就是:比如说,通过sed,awk,egrep命令来达到目的。 举个简单例子。

假如说如下文本文件,要将其中长度为5字符以上的给删除掉。

root@linux# cat data
1
22
333
4444
55555
666666
7777777
88888888

方法一: 使用awk命令的length()函数

root@linux# cat data | awk '{if (length($0) <=4 ) print $0}'
1
22
333
4444

方法二: 使用grep命令

root@linux# cat data | egrep -w '^.{1,4}'
1
22
333
4444

方法三: 使用sed命令

root@linux# cat data | sed -n '/^.\{5,\}/!w NewFile'
root@linux# cat NewFile
1
22
333
4444

备注:

1. 使用awk,grep命令的时候,可以将处理好的文件重定向到另外一个新文件中
2. egrep -w参数,表示仅跟模式匹配的单词
3. ^. 表示以任意字符开头的行,这个和-w命令匹配使用,这个很关键,否则找不到
4. !w  !表示所有模式不匹配的,w是输出,写入到新文件NewFile文件中

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Shell脚本实现删除邮件队列

    最近遇到了一个麻烦事:机器上邮件队列里老是被塞满,但是又不知道是什么地方发邮件写入的,十分蛋疼,没办法,只有临时处理一下了,写了个删除邮件的脚本rm_mqueue.sh. 复制代码 代码如下: #/bin/bash ###################################### #  touched by lingyun1 on 2014-12-01  # ###################################### #定义堵塞邮件文件路径 quepath=/var

  • Shell脚本实现删除一年前文件功能分享

    复制代码 代码如下: #!/bin/bash #Description: delete files #=====定义当前年份,月份以及文件所在目录=====# currentYear=`date +%Y`                                        currentMonth=`date  +%m |awk -F'0' '{print $2}'`   videodir=/var/video                                      

  • 使用bash shell删除目录中的特定文件的3种方法

    我是一名Linux新用户.现在我需要清理一个下载目录中的文件,其实我就是想从-/Download/文件夹删去除了以下格式的文件外所以其它文件: 1.*.iso - 所有的iso格式的文件. 2.*.zip - 所有zip格式的文件. 我如何在一个基于Linux,OS X 或者 Unix-like 系统上的bash shell中删除特定的文件呢? Bash shell 支持丰富的文件模式匹配符例如: 1.* - 匹配所有的文件. 2.? - 匹配文件名中的单个字母. 3.[...] - 匹配封闭括

  • PowerShell中删除空格、点号、减号和换行方法代码实例

    复制代码 代码如下: $text = ' ... Hello ...---  ' $text.Trim(" .-`t`n`r") 结果只显示:Hello

  • Shell脚本自动删除指定大小以上的备份文件

    最近本地虚拟机的空间老是被备份给占满,为了偷懒不想自己天天登录上去清除,才写了这个自动清理脚本. 系统:centos 5.x 脚本内容: cat make_room.sh 复制代码 代码如下: #!/bin/bash #size=`df -hP|grep /dev/mapper/VolGroup00-LogVol00|awk '{print $4}'|cut -f 1 -d "G"` size=`df -mP|grep /dev/mapper/VolGroup00-LogVol00|a

  • Shell脚本实现递归删除空文件夹

    有时我们需要递归删除空文件夹,网上找了一下,没有发现比较好的Shell脚本,于是自己动手写了一个 脚本 复制代码 代码如下: #!/bin/bash # author: 十年后的卢哥哥 # des: delete empty directories recursive deleteempty() {   find ${1:-.} -mindepth 1 -maxdepth 1 -type d | while read -r dir   do     if [[ -z "$(find "

  • PowerShell查询和删除打印任务操作代码实例

    适用于Windows 8.1或Server 2012 R2 Windows 8.1 和 Server 2012 R2上自带了一个PowerShell组件:"PrintManagement",它包含了所有管理本机和远程打印机的命令. 在之前的小技巧中,我们演示了如何读取打印机任务.每一个打印任务都有一个属性JobStatus ,用来表示该任务是否打印成功. 所有的状态可以这样获取: 复制代码 代码如下: PS> Import-Module PrintManagement   PS&

  • shell实现tr删除替换详解

    tr(translate缩写)主要用于删除文件中的控制字符,或进行字符转换. 语法:tr [–c/d/s/t] [SET1] [SET2]   #SET1: 字符集1:SET2:字符集2             -c:complement,用SET2替换除SET1以外的字符.             -d:delete,删除SET1中所有的字符,不转换.             -s:squeeze-repeats,压缩SET1中重复的字符.             -t:truncate-se

  • Shell中如何删除文本比较长的行的实现方法

     Shell中如何删除文本比较长的行的实现方法 有的时候需要对文件执行删除删除操作,这个时候比较常用的会使用vi命令中的dd命令,比如先执行10G(跳转到第10行),然后再执行20dd(删除20行),但实际情况未必是这么常规,比如说,要删除文件中,某行长度超过200个字符的行,如果文本比较小,还好,如果是几万行,几十万行的呢? 这个想用vi就不现实了. 我然想到的办法就是:比如说,通过sed,awk,egrep命令来达到目的. 举个简单例子. 假如说如下文本文件,要将其中长度为5字符以上的给删除

  • linux shell 中数组的定义和for循环遍历的方法

    linux shell中的语法和普通编程语言 c/c++ java 的不太一样,平时用的不多,所以总是记不住,写脚本才会去查怎么用. 今天突然被问到数组怎么去遍历.平时写shell脚本也经常遍历数组,但是一下没答上来,被鄙视了. 所以平时学习还是好好总结吧,不能每次都问度娘谷爷.IT 知识体系较为庞大,细节的东西也太多,平时遇到问题应该的多总结记笔记. linux 中定义一个数据的语法为: variable=(arg1 arg2 arg3 ....) 中间用空格分开.数组的下标从0开始. 1 获

  • 在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法

    在Winform开发的时候,我们很多时候可以利用表格控件来直接录入数据,不过在Web上较少看到,其实也可以利用dataTable对象处理直接录入表格行数据,这个可以提高数据的录入方便,特别是在一些简单业务的明细数据的时候,看起来会比弹出窗口录入方便一些,也高大上一点.本篇主要介绍在Bootstrap开发框架中使用dataTable直接录入表格行数据. 1.基于表格直接录入数据和Winform的界面回顾 在开始Web界面直接录入表格行数据前,我们先来看看Winform界面的处理情况,如我在流程管理

  • Shell中判断字符串是否为数字的6种方法分享

    本篇文章主要介绍了"shell 判断字符串是否为数字",主要涉及到shell 判断字符串是否为数字方面的内容,对于shell 判断字符串是否为数字感兴趣的同学可以参考一下. #!/bin/bash ## 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] && echo string a is numbers 第一个-n是shell的测试标志,对后面的串"`

  • 利用ROW_NUMBER() OVER函数给SQL数据库中每一条记录分配行号的方法

    从SQL Server 2005开始,增加了一个新的函数Row_Number(),他的一个很伟大的作用就是可以在数据表中添加一列从1开始的行号,这样大大代替所有多余的代码来产生行号.下面就教大家如何使用Row_Number()函数. 假设数据库中有如下表: 复制代码 代码如下: id    name 1    aa 3    bb 4    cc 执行如下SQL语句后将得到如下结果: SELECT ROW_NUMBER() OVER(ORDER BY id) as rowNum,* FROM 表

  • shell中删除文件中重复行的方法

    Linux下文本处理工具很丰富很强大,例如这样一个文件: 复制代码 代码如下: cat log www.jb51.net 192.168.1.1www.jb51.net 192.168.1.1www.jb51.net 192.168.1.2ffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeefffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeggggggggggggggg

  • JS实现从表格中动态删除指定行的方法

    本文实例讲述了JS实现从表格中动态删除指定行的方法.分享给大家供大家参考.具体如下: JS的表格对象有一个deleteRow方法用于删除表格中的指定行,只需要指定行号即可 <!DOCTYPE html> <html> <head> <script> function deleteRow(r) { var i=r.parentNode.parentNode.rowIndex; document.getElementById('myTable').deleteR

  • Python 删除整个文本中的空格,并实现按行显示

    希望以后每天写一篇博客,总结一下每天用到的基本功能,不然项目做完也就做完了,给自己留下的资料太少了. 今天需要造大量的姓名和家庭住址的数据,因此根据读取文件中现有的lastname.firstname以及省.市.道路等随机生成大量的模拟姓名和住址.其中用python进行了简单的文本处理,去掉文本中的空格,数字或者没用的字符等. example 1: 从ifn文件中读取数据,根据空格进行逐个读取,并进行换行显示. #encoding = utf-8# ifn = r"firstname.txt&q

  • Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)

    在Linux Shell中有很多的特殊符号,这对于我们写Shell脚本时要特别留意:一方面要知道这些特殊符号的用法,这些符号用好了可以达到事半功倍的效果:但另一方面要避免这些特殊符号的过度使用而导致脚本难以调试.难以阅读. 这些特殊符号罗列出来大致如下: 复制代码 代码如下: # ; ;; . , / / 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || &~ ~

  • Linux 中清空或删除大文件内容的五种方法

    在 Linux 终端下处理文件时,有时我们想直接清空文件的内容但又不必使用任何Linux命令行编辑器 去打开这些文件.那怎样才能达到这个目的呢?在这篇文章中,我们将介绍几种借助一些实用的命令来清空文件内容的方法. 注意: 由于再Linux中一切皆文件,你需要时刻注意,确保你将要清空的文件不是重要的用户文件或者系统文件.清空重要的系统文件或者配置文件可能会引发严重的应用失败或者系统错误. 提示:在下面的示例中,我们将使用名为 access.log 的文件来作为示例样本. 1. 通过重定向到 Nul

随机推荐