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

bash tail错误:使用-c选项时无法打开输入,bash,solaris-10,Bash,Solaris 10,我正试着决定在哪里砍掉一根圆木,以便缩小它的尺寸。 该日志于2010年启动,此后每天运行的脚本都会添加日志。我将日志中的每一行变灰,以拉出其中包含日期的行,然后我想获取这些行的最后4个字符,因为它们代表年份。然后我可以确定2018年第一次出现在哪一行,并截断上面的文件 我试图使用tail-c4来获取每行的最后4个字符,但我一直从tail得到“无法打开输入”错误 代码: 当我只使用“tail output.tmp”运行这段代码时,没有任何选项,它会按预期工作,并输出当前正在迭代的完整行 但是当我尝

我正试着决定在哪里砍掉一根圆木,以便缩小它的尺寸。 该日志于2010年启动,此后每天运行的脚本都会添加日志。我将日志中的每一行变灰,以拉出其中包含日期的行,然后我想获取这些行的最后4个字符,因为它们代表年份。然后我可以确定2018年第一次出现在哪一行,并截断上面的文件

我试图使用tail-c4来获取每行的最后4个字符,但我一直从tail得到“无法打开输入”错误

代码:

当我只使用“tail output.tmp”运行这段代码时,没有任何选项,它会按预期工作,并输出当前正在迭代的完整行

但是当我尝试使用tail-c4时,我得到了“tail:cannotopeninput”错误


我已经检查了手册页的tail和-c选项是否可用,那么我做错了什么?或者除了使用tail,还有更好的方法吗?(我的系统上没有grep-o选项)。

您不需要临时文件:

#!/bin/bash

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

IFS=$'\n'

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

您不需要临时文件:

#!/bin/bash

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

IFS=$'\n'

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

$(tail-1 trunc_dailyEO.tmp | rev | cut-c-4 | rev)
有效吗?是否要像代码示例中那样跟踪文件
trunc_dailyEO.tmp
?所以可能是个愚蠢的问题,但执行脚本的目录中是否存在
trunc_dailyEO.tmp
)哎呀,它们都应该是output.tmp。我试图简化问题的名称,但遗漏了一个。我修好了。我之所以写入临时文件,然后读取临时文件,是因为我知道tail查找的是一个文件,而不是字符串。tail-1的工作结果与tail相同(没有选项),因为它是一个单行文件。但是我的系统上没有rev命令。
$(tail-1 trunc_dailyEO.tmp | rev | cut-c-4 | rev)
工作吗?是否要像代码示例中那样跟踪文件
trunc_dailyEO.tmp
?所以可能是个愚蠢的问题,但执行脚本的目录中是否存在
trunc_dailyEO.tmp
)哎呀,它们都应该是output.tmp。我试图简化问题的名称,但遗漏了一个。我修好了。我之所以写入临时文件,然后读取临时文件,是因为我知道tail查找的是一个文件,而不是字符串。tail-1的工作结果与tail相同(没有选项),因为它是一个单行文件。但是我的系统上没有rev命令。这非常有效。我可以问一下${line:-4}的名称吗,这样我就可以了解更多有关它的信息了?@bk_32:您可以通过
Shell参数扩展进行搜索。简单地说就是:
${parameter:offset:length}
这非常有效。我可以问一下${line:-4}的名称吗,这样我就可以了解更多有关它的信息了?@bk_32:您可以通过
Shell参数扩展进行搜索。简单地说就是:
${parameter:offset:length}