我正在尝试从输出文件中选择特定的文本。
我正在阅读我的文件如下:
while read line
do
if [ "$line" == "SUMMARY OF POLARIZATION CALCULATION" ]; then
break
fi
done < tutorial1/Tutorial1_1.out当循环到达“摘要”行时,我只需要读取接下来的9行。我试图使用for循环,但我不知道如何使用它:
for i in {1..9}
do
read line < tutorial1/Tutorial1_1.out
echo $line >> Summary.out
done我的产出如下:
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行。请帮帮忙。
发布于 2014-09-02 16:18:19
你不能再改变方向了。它在开始时重新打开文件。在第一个块中执行第二个块,并使用相同的文件描述符:
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发布于 2014-09-02 16:27:00
您可以对-A命令使用grep参数,如下所示:
grep -A9 "SUMMARY OF POLARIZATION CALCULATION"从男人那里:
-A NUM,--后上下文=NUM 在匹配行之后打印尾上下文的NUM行。
演示:
while read -r line
do
echo "$line"
done < <(grep -A9 "SUMMARY OF POLARIZATION CALCULATION" filename | tail -9)用于下一个输入文件
before1
before2
before3
before4
before5
before6
SUMMARY OF POLARIZATION CALCULATION
line1
line2
line3
line4
line5
line6
line7
line8
line9
line10
line11
line12指纹:
line1
line2
line3
line4
line5
line6
line7
line8
line9或者简单地说:
grep -A9 "SUMMARY OF POLARIZATION CALCULATION" ../Tutorial1_1.out | tail -9 >> Summary.out发布于 2014-09-02 16:27:50
让我们尝试一个干净的解决方案:
1)查找包含所需字符串的行号。您可以通过实现计数器来做到这一点,但是这样做更好:
linenr=$(grep -n -m 1 "SUMMARY OF POLARIZATION CALCULATION" <your file name here> | cut -d':' -f1)
2)计算您想要的最后一行数:
let "lastlinenr = $linenr + 9"
3)获取行并将它们写入文件:
cat <your file name here> | sed -n "$linenr","$lastlinenr"p > <your destination file here>
https://stackoverflow.com/questions/25627839
复制相似问题