免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 老aakk
打印 上一主题 下一主题

[文本处理] (已解决) [复制链接]

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
31 [报告]
发表于 2014-07-24 11:13 |只看该作者
@yestreenstars
错误的日期,awk的mktime不是返回-1吗?
  1. echo |awk '{print mktime("2012 02 30 00 00 00")}'
  2. 1330531200
复制代码

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
32 [报告]
发表于 2014-07-24 11:18 |只看该作者
回复 31# Herowinter

awk貌似没那功能吧?
  1. [root@localhost ~]# echo |awk '{print mktime("2012 13 30 00 00 00")}'
  2. 1359504000
  3. [root@localhost ~]#
复制代码

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
33 [报告]
发表于 2014-07-24 11:20 |只看该作者
回复 32# yestreenstars
那悲剧了,我代码都写得差不多了,结果发现mktime没办法验证
日期非法。

   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
34 [报告]
发表于 2014-07-24 11:35 |只看该作者
LikeLx 发表于 2014-07-24 10:25
回复 25# q1208c
那如果是2000101或者2000012


2000101 => 2000 1 01, 2000 10 1 => 2000 0101, 2000 1001, 不管哪种, 都会成功的.
2000012 => 2000 0 12, 2000 01 2 => 2000 0012, 2000 0102, 后一种会成功.

论坛徽章:
4
巳蛇
日期:2014-08-12 22:30:43双子座
日期:2014-09-29 15:50:02未羊
日期:2014-11-04 14:08:43神斗士
日期:2015-11-19 21:57:47
35 [报告]
发表于 2014-07-24 11:38 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
4
巳蛇
日期:2014-08-12 22:30:43双子座
日期:2014-09-29 15:50:02未羊
日期:2014-11-04 14:08:43神斗士
日期:2015-11-19 21:57:47
36 [报告]
发表于 2014-07-24 11:50 来自手机 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
4
巳蛇
日期:2014-08-12 22:30:43双子座
日期:2014-09-29 15:50:02未羊
日期:2014-11-04 14:08:43神斗士
日期:2015-11-19 21:57:47
37 [报告]
发表于 2014-07-24 11:57 来自手机 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
4
巳蛇
日期:2014-08-12 22:30:43双子座
日期:2014-09-29 15:50:02未羊
日期:2014-11-04 14:08:43神斗士
日期:2015-11-19 21:57:47
38 [报告]
发表于 2014-07-24 11:57 来自手机 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
39 [报告]
发表于 2014-07-24 13:48 |只看该作者
本帖最后由 Herowinter 于 2014-07-24 14:16 编辑

@老aakk@yestreenstars @q1208c
参考了q兄的想法实现了下,可能不是很专业,欢迎提出改进意见。
  1. #!/bin/bash

  2. function checkDate(){
  3.     case ${#1} in
  4.     8)
  5.         date -d"$1" &>/dev/null
  6.         return $?
  7.         ;;
  8.     7)  
  9.         date -d"${1:0:4}0${1:4}" &>/dev/null
  10.         ret1=$?
  11.         date -d"${1:0:6}0${1:6}" &>/dev/null
  12.         ret2=$?
  13.         if [ $ret1 -eq 1 ] && [ $ret2 -eq 1 ];then
  14.            return 1
  15.         else
  16.            return 0
  17.         fi
  18.         ;;
  19.     6)
  20.         date -d"${1:0:4}0${1:4:1}0${1:5}" &>/dev/null
  21.         return $?
  22.         ;;
  23.     *)
  24.         return 1
  25.         ;;
  26.     esac
  27. }

  28. while read line
  29. do
  30.     dstr=`sed -r 's/[^0-9]*([0-9]*).*/\1/'<<<"$line"`
  31.     checkDate $dstr
  32.     [ $? -eq 1 ]&&echo "$line"
  33. done <i
复制代码
  1. ./test.sh
  2. 57841364my
  3. w19711382
  4. 2014138
复制代码
  1. cat i
  2. w1971128
  3. w19790903
  4. tw19980614
  5. tw1998614
  6. you20011112
  7. you200989
  8. win384562
  9. 57841364my
  10. w19711382
  11. 2014138
复制代码

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
40 [报告]
发表于 2014-07-24 13:50 |只看该作者
回复 39# Herowinter


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP