无法在shell脚本中将文件从一个行号grep到另一个行号

时间:2017-11-10 12:49:37

标签: bash shell

我无法从写入的shell脚本中grep文件。以下是代码

#!/bin/bash

startline6=`cat /root/storelinenumber/linestitch6.txt`
endline6="$(wc -l < /mnt/logs/arcfilechunk-aim-stitch6.log.2017-11-08)"
awk 'NR>=$startline6 && NR<=$endline6' /mnt/logs/arcfilechunk-aim-stitch6.log.2017-11-08 | grep -C 100 'Error in downloading indivisual chunk' > /root/storelinenumber/error2.txt

虽然手动提供起始行和结束行号,但awk命令是独立工作的。

2 个答案:

答案 0 :(得分:0)

语法有问题。最后一行被修改为

awk 'NR>='"$startline9"' && NR<='"$endline9"'' /mnt/logs/arcfilechunk-aim-stitch9.log | grep -C 100 'Error in downloading indivisual chunk' >> /root/storelinenumber/error.txt

它解决了这个问题。

答案 1 :(得分:0)

您在单引号内尝试了变量扩展,这意味着它们实际上不会 扩展。

将shell变量传递给awk时,我更喜欢它们是实际的第一类awk变量,因此我不必担心这类内容:

awk -vstl=$startline6 -vendl=$endline6 'NR>=stl && NR<=endl ...