如何在linux显示日期

如何在linux显示日期,第1张

一 、find

基本概念: find是一款文件搜索工具。

多文件名匹配:

找出/var/log下7天前的日志并压缩存储在/work下,要求包名为当天日期

二、grep的用法

grep支持通配

常用方法:

1grep "^####" zabbix_serverconf 匹配文件中指定匹配规则的字符串

2输出匹配行的前后几行

grep "^####" zabbix_serverconf -C 3

3结合tr实现大小写字母转换

4实现既输出匹配路径又显示匹配结果

5[root@localhost test]# grep ":" zabbix_serverconf | cut -d : -f 2

cut的用法:

-d 以什么来分割

-f 取分割后的第几段

取出最后登录系统的用户信息

6正则表达式回文结构12321/zabaz

grep -w -e '()()\2\1' file

7grep -E 扩展正则表达式

grep -E 'l{1,2}' zabbix_serverconf

匹配文件中l字母最小连续出现1次,最多连续出现2次

grep选项:

-i:忽略字符的大小写

-o:仅显示匹配到的字符串本身

-v:显示不被模式匹配到的行

-E:支持使用扩展的正则表达式

-C #:显示被模式匹配的行及其前后各#行(A前B后)

------------------------------------------------------------------------------------------------------------三、sed的用法

sed [options] script filename

工作流程:

上图所示过程读取文件到模式空间--->匹配模式空间文件里一行内容--->匹配成功执行输出或执行sed '{cmd1;cmd2;cmd3}' /filepath---->执行成功丢弃或没匹配上丢弃,读取模式空间下一行

script可以是脚本或地址定界

地址定界 sed ‘/pattern编辑命令/’ /filepath

选项:

-n:不输出模式空间里的内容,仅输出匹配到的内容

-e:多个script

-f:从指定文件中读取编辑脚本

编辑命令:

p:不输出模式空间里的内容

d:删除

$:最后一行

1sed -n '1,3p' /etc/passwd

匹配第1行至第三行不输出模式空间里的内容

2匹配root开头的行

sed -n '/^root/'p /etc/passwd

3多点编辑

sed -e 's@^#[[:space:]]@@' -e '/^UUID/d' /etc/fstab

4从指定文件中读取编辑脚本

写入脚本 echo "1,3p" > sed_shtxt

sed -n -f sed_shtxt /etc/passwd

5$的使用

sed -n '$p' /etc/passwd

6#,+#用法

第二行行后面加五行 sed -n '2,+5p' /etc/passwd

7双pattern模式

从pat1模式匹配到的行至pat2匹配到的行

s/ 要替换的字符/替换成的字符/标记:查找替换,其分隔符可自行指定,常用的有s@@@, s###

替换标记:

g:全局替换;

w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;

p:显示替换成功的行;

四、awk的用法

awk [option] 'pattern{commend}' /filepass

6自定义变量及BEGIN和END

7printf的format及条件表达式:条件为真的 *** 作:为假的 *** 作

8awk支持函数调用和条件语句

9引用于 骏马金龙博客 点击进入

在上面的语句中,var123不能在BEGIN{}中使用,当awk执行完BEGIN程序后,准备读取主输入,于是开始解析program后的输入文件。解析时发现,var1和var2都是赋值语句,于是当成变量处理,当读取到file1时,发现只有一个参数,则当作输入文件,于是开始处理该文件。在处理file1时,var1和var2都是有效的,但var3还未赋值,因此var3无效。当处理完file1后,继续解析下一个主输入文件,此时var3被赋值,并开始处理file2。在处理file2时,var1、var2和var3都是有效的,但var1被新值覆盖

查看文件时间戳命令:stat awktxt

File: `awktxt'

Size: 20 Blocks: 8 IO Block: 4096 regular file

Device: 801h/2049d Inode: 380730 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2008-04-26 01:50:44000000000 +0800

Modify: 2008-04-26 01:48:18000000000 +0800

Change: 2008-04-26 01:48:18000000000 +0800

说明:Access访问时间。Modify修改时间。Change状态改变时间。可以stat 查看这个目录所有文件的状态。

现在是要过滤出Modify的时间戳,并以yyyyMMddHHSS格式保存,则可以利用下面这条命令:

stat awktxt | grep -i Modify | awk -F '{print $1}' | awk '{print $2$3}'| awk -F- '{print $1$2$3}' | awk -F: '{print $1$2$3}'

输出结果:20080426014818

建议楼主下载《Linux就该这么学》,里面有很全面、很系统、很实用的命令介绍,图文形式的,非常适合初学者的。

希望可以帮到您!

strftime([format [, timestamp[, utc-flag]]])

Format timestamp according to the specification in format If utc-flag is present and is non-zero or non-null, the result is in UTC, otherwise the result is in local time The timestamp should be of the same form as returned by systime() If timestamp is missing, the current time of day is used If format is missing, a default format equivalent to the output of date(1) is used The default format is available in PROCINFO["strftime"] See the specification for the strftime() function in ANSI C for the format conversions that are guaranteed to be available

根据Format字符串设置时间格式。最后一个参数UTC-flag提供非零、非空参数就会返回世界时间,否则结果是当地时间。第二个参数“时间戳”的格式和systime()函数返回的时间格式相同,如果该参数未提供,使用当时的时间。如果格式字符串format未提供,使用默认的格式,它和date(1)输出所用的格式相同。默认的格式可以通过PROCINFO["strftime"]查看。查看规范ANSI C的strftime()功能保证可用的格式转换。

Format字串:

%a 星期几的简写

%A 星期几的全称

%b 月份的简写

%B 月份的全称

%c 标准的日期的时间串

%C 年份的前两位数字

%d 十进制表示的每月的第几天

%D 月/天/年

%e 在两字符域中,十进制表示的每月的第几天

%F 年-月-日

%g 年份的后两位数字,使用基于周的年

%G 年份,使用基于周的年

%h 简写的月份名

%H 24小时制的小时

%I 12小时制的小时

%j 十进制表示的每年的第几天

%m 十进制表示的月份

%M 十时制表示的分钟数

%n 新行符

%p 本地的AM或PM的等价显示

%r 12小时的时间

%R 显示小时和分钟:hh:mm

%S 十进制的秒数

%t 水平制表符

%T 显示时分秒:hh:mm:ss

%u 每周的第几天,星期一为第一天 (值从1到7,星期一为1)

%U 第年的第几周,把星期日作为第一天(值从0到53)

%V 每年的第几周,使用基于周的年

%w 十进制表示的星期几(值从0到6,星期天为0)

%W 每年的第几周,把星期一做为第一天(值从0到53)

%x 标准的日期串

%X 标准的时间串

%y 不带世纪的十进制年份(值从0到99)

%Y 带世纪部分的十制年份

%z,%Z 时区名称,如果不能得到时区名称则返回空字符。

%% 百分号

shell编程:

如果你为每个文件按日期命名的格式都一致的话,那么”ls -l“命令列出的文件列表就是默认按文件名称(日期先后)排序的。那么最后一个就是最新的,文件名可以用以下方式获取。

filename=‘ls -l | tail -n 1 | awk '{print $9}'’

转移文件用 mv 命令即可

逐条解释:

ls -lt /dirname/

列出此目录下的所有文件并按照时间先后排序

grep filename

过滤出包含关键字的文件

head -n 1

查看排名第一的文件

awk '{print $9}'

打印出第九字段,此处为文件名

以上就是关于如何在linux显示日期全部的内容,包括:如何在linux显示日期、shell语句 file_date=`awk '{print $1}' *.log | sort -u | awk -F "[" '{print $2}' -` 这是什么意思、shell awk命令详解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9305787.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存