我希望能够从 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