shell之sed命令删除变量中带有“日期时间等内容”的方法

sed命令删除指定等内容可能大家都知道,比如想要删除某个文件中包含"badboy"的那行,直接使用下面的命令就可以:

sed -i ‘/badboy/d‘ file.txt

就可以把flie.txt文件中包含badboy的内容全部删掉。

sed命令删除指定行,如果匹配字符用变量替代,变量中包含"/"符号,使用下面方法处理;

例如:

[[email protected]]# vi a.txt

/usr/sbin/restart.sh

/usr/sbin/control.sh

[[email protected]]# vi del.sh

A=‘/usr/sbin/control.sh‘

sed -i "/$A/d" a.txt

执行./del.sh后发现没有删掉,这是由于变量中有“/”这样的特殊字符,sed执行的时候出现问题。

vi 修改del.sh内容

将/usr/sbin/control.sh                  //通过“\”进行转义

改成这样就可以了:

A=‘\/usr\/sbin\/control.sh‘

sed -i "/$A/d" a.txt

执行脚本,./del.sh可以删掉;

下面要说的是变量中带有时间和日期,如下图的日志,带有的时间格式为“date +%d/%b/%Y:%H:%M:%S”

我们想要删掉带有“12/May/2017”的所有行的内容;

当然可以用:

sed -i ‘/12\/May\/2017/d‘ z512.txt

来直接删掉,可是时间是在变化,这样只能删除指定的日期日志内容;有些时候需要使用变量,那么就需要下面的方法来实现。(比如今天是5月19号,我们要删掉5月12号的内容)

首先编辑一个脚本文件:vi zzz.sh

datelog=`cat z512.txt |awk   ‘{ print $4 }‘ |awk -F"[" ‘{ print $2 }‘`

for datex in $datelog

do

echo $datex

done

culdate=`date +%d/%b/%Y:%H:%M:%S`

delday=`date +‘%d\/%b\/%Y‘ -d "-7day"`

echo $culdate

echo $delday

sed -i "/$delday/d" z512.txt

执行后的情况:./zzz.sh

所有包括“12/May/2017”内容的行,已经全部被删除掉了。

注意:红色部分变量的格式及使用符号等非常重要,否则是无法正确删除指定的内容。

此方法可以用于指定时间清理,如某一时间点之前的日志。

时间: 2024-08-02 15:12:01

shell之sed命令删除变量中带有“日期时间等内容”的方法的相关文章

Python中处理日期时间库的使用方法(转载)

<本文来自公众号"大邓带你玩python",转载> 用百分之20时间,学会解决百分之80的问题. 常用的库有time.datetime.其中datetime库是对time库的封装,所以使用起来更加便捷.date是指日期时间(年月日)处理,time往往更加细小的单位(小时分秒等)的时间处理. 一.datetime库 datetime.date类 表示日期的类,常用的属性有year.month.day.参数都为整数. import datetime #任何一天 someday

linux shell基础(五)sed命令(编辑中)

写shell有个步骤就是从一段文本中截取一段字符进行处理. 一.sed命令 sed是一种强大的流式编辑器 (stream editor for filtering and transforming text),它能够完美的使用正则表达式,逐行处理文本并把结果显示到屏幕上.sed的强项是替换文本中的特定字符. 用法:sed [选项]... {脚本(如果没有其他脚本)} [输入文件] sed [options] 'command' file(s) sed [options] -f scriptfil

[shell基础]——sed命令

关于sed sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed详解 sed  [选项]  sed编辑命令  输入文件shell 命令 |  sed  [选项]   s

Shell脚本sed命令

from:http://blog.csdn.net/engledb/article/details/19623087 六.常用范例 1.p命令 命令p用于显示模式空间的内容.默认情况下,sed把输入行打印在屏幕上,选项-n用于取消默认的打印操作.当选项-n和命令p同时出现时,sed可打印选定的内容. 例子: [plain] view plaincopy (1)sed '/my/p' datafile #默认情况下,sed把所有输入行都打印在标准输出上.如果某行匹配模式my,p命令将把该行另外打印

FreeMarker中的日期时间处理

1. FreeMarker中的日期时间格式设置 FreeMarker中可以分别对date.time.datetime三种类型的日期时间设置格式,例如: config.setDateTimeFormat("yyyy-MM-dd HH:mm:ss"); config.setDateFormat("yyyy-MM-dd"); config.setTimeFormat("HH:mm:ss"); 当我们对一个页面变量使用 ?date ?time ?date

Android中关于日期时间与时区的使用总结

原文引自:http://www.2cto.com/kf/201312/266908.html 在开发Android的过程中,出现过几次由于日期时间导致的问题,而且主要是由于时区的原因导致,所以一直想总结一下,形成一个良好的开发规范. 一.Unix时间戳 Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方法,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数.Unix时间戳不仅被

JS中date日期初始化的5种方法

原文:JS中date日期初始化的5种方法 创建一个日期对象: 代码如下: var objDate=new Date([arguments list]); 参数形式有以下5种: 1)new Date("month dd,yyyy hh:mm:ss"); 2)new Date("month dd,yyyy"); 3)new Date(yyyy,mth,dd,hh,mm,ss); 在程序中我使用的第三种初始化方法,总是显示格式化的参数不正确,仔细看了一下一定要是整型的才可

Linux Shell学习-sed命令详解

(1).sed介绍 Sed是流编辑器,stream editor,它是一个将一些列编辑命令作用于一批文本文件的理想工具. (2).sed工作原理 Sed是一个非交互式文本编辑器,它可以对文本文件和标准输入进行编辑,标准输入可以是来自键盘输入.文件重定向.字符串.变量,甚至来自管道的文本. Sed从文本的一个文本行或标准输入中读取数据,将其复制到缓冲区,然后读取命令行或脚本的第一个命令,对此命令要求的行号进行编辑,重复此过程,直到命令行或脚本中的所有命令都执行完毕. 相对于诸如vi等其他文本编辑器

Shell之sed命令

sed用于一次性处理所有的编辑任务,尤为高效,为用户节省了大量的时间,sed适用于以下三种场合: 1.编辑相对交互文本编辑器而言太大的文件: 2.编辑命令太复杂,在交互式文本编辑器中难以输入的情况: 3.对文件扫描一遍,但是需要执行多个编辑函数的情况: sed 只是对缓冲区中原始文件的副本进行编辑,并不编辑原始的文件.因此,如果需要保存改动内容,需要将输出重定向到另一个文件,可以使用下面格式的命令: sed  'sed命令'  input_file > result_file 该命令将sed 命