繁体   English   中英

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

[英]Cannot grep a file from one line number to another in shell script

我无法从编写的Shell脚本中复制文件。 下面是代码

#!/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命令是独立运行的。

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

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

它解决了问题。

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

当将shell变量传递给awk ,我更喜欢它们是实际的一流awk变量,因此我不必担心这种事情:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM