Bash脚本文件读取
我试图从输出文件中选择某些文本 我正在阅读我的文件,如下所示:Bash脚本文件读取,bash,file,for-loop,Bash,File,For Loop,我试图从输出文件中选择某些文本 我正在阅读我的文件,如下所示: while read line do if [ "$line" == "SUMMARY OF POLARIZATION CALCULATION" ]; then break fi done < tutorial1/Tutorial1_1.out next is setrmt next is setrmt next is setrmt next is setrmt next is setrmt
while read line
do
if [ "$line" == "SUMMARY OF POLARIZATION CALCULATION" ]; then
break
fi
done < tutorial1/Tutorial1_1.out
next is setrmt
next is setrmt
next is setrmt
next is setrmt
next is setrmt
next is setrmt
next is setrmt
next is setrmt
next is setrmt
但我需要它是总结声明后的下9行。请帮助。您不能再次重定向。这将在开始时重新打开文件。在第一个块内执行第二个块,并使用相同的文件描述符:
while read line
do
if [ "$line" == "SUMMARY OF POLARIZATION CALCULATION" ]; then
for i in {1..9}
do
read line
echo $line >> Summary.out
done
break
fi
done < tutorial1/Tutorial1_1.out
你不能再重定向了。这将在开始时重新打开文件。在第一个块内执行第二个块,并使用相同的文件描述符:
while read line
do
if [ "$line" == "SUMMARY OF POLARIZATION CALCULATION" ]; then
for i in {1..9}
do
read line
echo $line >> Summary.out
done
break
fi
done < tutorial1/Tutorial1_1.out
可以为grep命令使用-A参数,如下所示:
grep -A9 "SUMMARY OF POLARIZATION CALCULATION"
从那个男人那里:
-NUM,-after context=NUM
演示:
印刷品:
line1
line2
line3
line4
line5
line6
line7
line8
line9
或者简单地说:
grep -A9 "SUMMARY OF POLARIZATION CALCULATION" ../Tutorial1_1.out | tail -9 >> Summary.out
可以为grep命令使用-A参数,如下所示:
grep -A9 "SUMMARY OF POLARIZATION CALCULATION"
从那个男人那里:
-NUM,-after context=NUM
演示:
印刷品:
line1
line2
line3
line4
line5
line6
line7
line8
line9
或者简单地说:
grep -A9 "SUMMARY OF POLARIZATION CALCULATION" ../Tutorial1_1.out | tail -9 >> Summary.out
让我们尝试一个干净的解决方案: 1查找包含所需字符串的行的行号。您可以通过实现计数器来实现这一点,但这样更好: linenr=$grep-n-m 1极化计算汇总| cut-d':'-f1 2计算您想要的最后一行的编号: 设lastlinenr=$linenr+9 3获取行并将其写入文件:
cat | sed-n$linenr,$lastlinenrp>让我们尝试一种干净的解决方案: 1查找包含所需字符串的行的行号。您可以通过实现计数器来实现这一点,但这样更好: linenr=$grep-n-m 1极化计算汇总| cut-d':'-f1 2计算您想要的最后一行的编号: 设lastlinenr=$linenr+9 3获取行并将其写入文件:
cat | sed-n$linenr,$lastlinenrp>您正在阅读的文件到底在哪里?它是在tutorial1/tutorial1\u 1.out中还是在../tutorial1\u 1.out中?这些是不同的文件,除非tutorial1是指向父目录的符号链接。很抱歉,该文件位于/tutorial1中。您正在阅读的文件到底在哪里?它是在tutorial1/tutorial1\u 1.out中还是在../tutorial1\u 1.out中?这些是不同的文件,除非tutorial1是指向父目录的符号链接。很抱歉,该文件位于/tutorial1中。共享文件描述符时,您也可以将整个for循环替换为head。{读取行时;如果[…],则执行;然后中断;fi;完成;head-9>Summary.out;}