bash 脚本 - 从第 N 行打印到 EOF

bash 脚本 - 从第 N 行打印到 EOF

我希望能够从 bash 打印行数,如下所示:行号(从顶部开始计算)-> 文件末尾

看来尾部只会从底部计算行。

有人知道怎么做吗?谢谢。

我尝试过以下方法

# Where $1 is the file I'm reading in

# Get line number of error:
LINENUM=$( grep -n "$LAST_ERROR_DATE" $1 | egrep $LOG_THRESHOLD | grep $LAST_HOUR: | sed 's/:/ /g' | awk '{print $1}' | head -n 1 )

echo $LINENUM

# This returns 995

# Print everything from linenumber downwards
MESSAGE=$( awk 'NR >= $LINENUM' $1 )

当我手动将 995 而不是 $LINENUM 弹出到 awk 时,此方法有效,但它似乎无法读取我的 bash 变量。有什么想法吗?

答案1

单引号''表示“使用此确切字符串”。它们不会用变量值替换变量名。所以这就是为什么你必须手动写入995。这有帮助吗?

答案2

用于tail -n +X filename从第 X 行打印到文件末尾。

答案3

沃姆布尔答案是最好的,但是为了解决最后一行变量的问题,你可以使用 awk 的变量传递功能:

MESSAGE=$( awk -v linenum=$LINENUM 'NR >= linenum' $1 )

答案4

备用:

line=10
file=/path/to/file
sed -n $line,\$p $file

相关内容