bash尾部错误:使用-c选项时无法打开输入

时间:2019-04-05 18:21:23

标签: bash solaris-10

我正在尝试确定在哪里切割日志以缩小其大小。 该日志始于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选项。)

1 个答案:

答案 0 :(得分:2)

您不需要临时文件:

#!/bin/bash

date=$(grep ' EST ' input.log)

IFS=$'\n'

for line in $date
do
   echo ${line: -4}
done