我有一个shell脚本的输出:
aaa.sh输出
Tue Mar 04 01:00:53 2014
Time drift detected. Please check VKTM trace file for more details.
Tue Mar 04 07:21:52 2014
Time drift detected. Please check VKTM trace file for more details.
Tue Mar 04 13:17:16 2014
Time drift detected. Please check VKTM trace file for more details.
Tue Mar 04 16:56:01 2014
SQL> ALTER DISKGROUP fra ADD DISK '/dev/rhdisk20'
Wed Mar 05 00:03:42 2014
Time drift detected. Please check VKTM trace file for more details.
Wed Mar 05 04:13:39 2014
Time drift detected. Please check VKTM trace file for more details.
Tue Mar 05 05:56:07 2014
GMON querying group 3 at 10 for pid 18, osid 27590856
GMON querying group 3 at 11 for pid 18, osid 27590856
我需要从今天的日期开始获取该部分:
Wed Mar 05 00:03:42 2014
Time drift detected. Please check VKTM trace file for more details.
Wed Mar 05 04:13:39 2014
Time drift detected. Please check VKTM trace file for more details.
Tue Mar 05 05:56:07 2014
GMON querying group 3 at 10 for pid 18, osid 27590856
GMON querying group 3 at 11 for pid 18, osid 27590856
答案 0 :(得分:3)
您可以使用正确的格式获取日期:
today=$(date +'%a %b %d')
然后像这样搜索:
grep "$today" aaa.sh
如果今天有没有日期的行,例如你的GMON行,你可以添加-A
来说明之后的行数并使用一个大数字:
grep -A 999999 "$today" aaa.sh
如果您在AIX上并且没有-A选项,请使用这样的sed:
today=$(date +'%a %b %d')
sed -n "/${today}/,$ p" aaa.sh
<强>解释强>
那就是将今天的日期存储在变量today
中,格式为“Wed Mar 05”。然后搜索,不打印任何内容(-n
)直到找到该日期,从那时起,直到文件末尾($
)打印所有行(p
)。
答案 1 :(得分:1)
您可以使用
tail -n 7 filename
获取所需的输出。它基本上会为您提供名为filename
的文本文件的最后七行。
要从今天开始获得解决方案,您可以使用:
k=$(date +"%a %b %d")
g=$(grep -nr "$k" in|cut -f1 -d:|head -1)
total=$(wc -l<in)
l=`expr $total - $g + 1
tail -n$l in
答案 2 :(得分:1)
我想我有一个简单的解决方案:
获取date
以与文件中的日期匹配的格式输出日期(在格式化选项上选中man date
)。由于我们不想匹配小时/分钟/秒,因此我们必须拨打date
两次:一次是工作日/月/日的一半,一次是全年的一半。在这两半之间,我们将horus / minutes / seconds与.*
正则表达式匹配。
然后做:
aaa.sh | grep -E '`date --only-weekday-month-day`.*`date --only-year`' -A 999999
答案 3 :(得分:1)
虽然我使用NewWorld的答案,但可以修改为,
转换类似于文件格式的日期输出
假设在变量'D'中你得到了那个输出
sed '1,/${D}/d' aaa.sh
将在匹配日期匹配后输出所有行。
示例:假设您获得D="Wed Mar 05 00:03:42 2014"
输出将如预期一样。
答案 4 :(得分:1)
尝试
sed -n '/Wed Mar 05/,$p' aaa.sh
此处-n
表示“除非另有指定,否则不打印任何内容”。
首先出现一条与表达式/ Wed \ Mar \ 05 /匹配到文件末尾的行,将打印出来(p
)“