我尝试仅使用扩展名.log从前两行的文件名中提取日期 例如:文件名如下 my_logFile.txt包含
abc20140916_1.log
abhgg20140914_1.log
abf20140910_1.log
log.abc_abc20140909_1
我试过的代码:
awk '{print substr($1,length($1)-3,4)}' my_logFile.txt
但是将操作视为:
.log
.log
.log
需要op as:
20140916
20140914
*****修订后的查询* 我有一个包含n个日志文件的txt文件。 txt文件中的每一行都是这样的。
-rw-rw-rw- 1 abchost abchost 241315175 Apr 16 10:45 abc20140405_1.log
-rw-rw-rw- 1 abchost abchost 241315175 Apr 16 10:45 aghtff20140404_1.log
-rw-rw-rw- 1 abchost abchost 241315175 Apr 16 10:45 log.pqrs20140403_1
我需要从前两行中提取文件名中的日期。这里的文件名在日期之前具有不同数量的char。 操作应该是L
20140405
20140404
答案 0 :(得分:1)
这对你有用吗?
$ head -2 file | grep -Po ' [a-z]+\K[0-9]+(?=.*\.log$)'
20140405
20140404
head -2 file
获取文件的前两行。grep -Po ' [a-z]+\K[0-9]+(?=.*\.log$)'
获取(space
+ a-z letters
)和(.log
+ end of line
)块之间的数字位数。答案 1 :(得分:0)
试试这个,
cut -f9 -d " " <file> | grep -o -E "[0-9]{8}"
在我的机器上工作,
[root@giam20 ~]# cat sample.txt
-rw-rw-rw- 1 abchost abchost 241315175 Apr 16 10:45 abc20140405_1.log
-rw-rw-rw- 1 abchost abchost 241315175 Apr 16 10:45 aghtff20140404_1.log
-rw-rw-rw- 1 abchost abchost 241315175 Apr 16 10:45 log.pqrs20140403_1
[root@giam20 ~]# cut -f9 -d " " sample.txt | grep -o -E "[0-9]{8}"
20140405
20140404
20140403