免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7722 | 回复: 11
打印 上一主题 下一主题

删除文本文件中特定的行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-04 01:44 |只看该作者 |倒序浏览
本帖最后由 psit 于 2010-07-04 02:02 编辑

date.txt
  1. 日期
  2. 2010-06-23
  3. 2010-06-24
  4. 2010-06-25
  5. 2010-06-26
  6. 2010-06-27
  7. 2010-06-28
  8. 2010-06-29
  9. 2010-06-30
  10. 2010-07-01
  11. 2010-07-02
  12. 2010-07-03
  13. 2010-07-04
复制代码
如上文本文件,今天是7月4号,执行如下脚本后
  1. #!/bin/bash
  2. td=`date +%Y-%m-%d --date '3 days ago'`
  3. echo $td
  4. sed -i "/$td/"d date.txt
复制代码
得到的是删除了2010-07-01这一行的新文件。结果如下
  1. 日期
  2. 2010-06-23
  3. 2010-06-24
  4. 2010-06-25
  5. 2010-06-26
  6. 2010-06-27
  7. 2010-06-28
  8. 2010-06-29
  9. 2010-06-30
  10. 2010-07-02
  11. 2010-07-03
  12. 2010-07-04
复制代码
少了07-01这行,但是如何才能做到将07-01这一行往上数直到第二行全部删除,第一行是“日期”,不做删除,最后得到的结果是
  1. 日期
  2. 2010-07-02
  3. 2010-07-03
  4. 2010-07-04
复制代码

论坛徽章:
0
2 [报告]
发表于 2010-07-04 04:18 |只看该作者
本帖最后由 ideal_gjh 于 2010-07-04 04:39 编辑
  1. #!/bin/bash
  2. td=`date +%Y-%m-%d --date '3 days ago'`
  3. sed -i -e  "2,`grep -n $td  date.txt|cut -c1`d" date.txt
复制代码

求职 : 技术支持/维
论坛徽章:
0
3 [报告]
发表于 2010-07-04 06:34 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2010-07-04 08:27 |只看该作者
  1. 把文件排好序,按3楼那样搞就可以了
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2010-07-04 08:33 |只看该作者
echo "日期" > datenew.txt && tail -3 date.txt >> datenew.txt

论坛徽章:
0
6 [报告]
发表于 2010-07-04 22:01 |只看该作者
非常感谢楼上几位!突然发现原来我的思路没搞清楚,把过程想得太复杂了!
再次感谢!

论坛徽章:
0
7 [报告]
发表于 2010-07-06 15:11 |只看该作者
99超人 发表于 2010-07-04 06:34


sed / /,/ /是正道...........

论坛徽章:
0
8 [报告]
发表于 2010-07-06 17:06 |只看该作者
perl -ne 'BEGIN{print "日期\n";}print if /2010-07-01/../^$/'

论坛徽章:
0
9 [报告]
发表于 2010-07-29 09:56 |只看该作者
楼上的也是牛人

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
10 [报告]
发表于 2010-07-29 10:48 |只看该作者
本帖最后由 rdcwayx 于 2010-07-29 10:51 编辑

呵呵,这个不用先排序
  1. td=`date +%Y%m%d --date '3 days ago'`
  2. awk -F - 'NR>1&&$1$2$3>'"$td"'' urfile
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP