Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash脚本文件读取_Bash_File_For Loop - Fatal编程技术网

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;}Summary.out;}