我正在尝试确定在哪里切割日志以缩小其大小。 该日志始于2010年,此后被每天运行的脚本附加到该日志中。我要抓紧日志的每一行以拉出其中有日期的行,然后我要抓住这些行的后4个字符,因为这代表了年份。然后,我可以确定例如2018年第一次出现在哪一行,并截断该年之上的文件。
我正在尝试使用tail -c 4来抓取每行的最后4个字符,但是我一直从tail收到“无法打开输入”错误。
代码:
#!/bin/bash
date=$(grep ' EST ' input.log)
IFS=$'\n'
for line in $date
do
printf "%s\n" "$line" > output.tmp
chmod 777 output.tmp
echo $(tail -c 4 output.tmp)
done
当我仅使用“ tail output.tmp”运行此代码时,没有任何选项,它可以按预期运行,并输出当前正在迭代的整行。
但是当我尝试使用tail -c 4时,这就是我收到“ tail:无法打开输入”的错误。
我检查了手册页的尾部,并且-c选项可用,那么我在做什么错呢?还是除了使用tail之外还有更好的方法来解决这个问题? (我的系统上没有grep -o选项。)
答案 0 :(得分:2)
您不需要临时文件:
#!/bin/bash
date=$(grep ' EST ' input.log)
IFS=$'\n'
for line in $date
do
echo ${line: -4}
done