Bash shell脚本读取所有文件的特定内容并写入新闻文件
我在父目录中有一个扩展名为*sac的文件,这些文件包含地震波形头信息。我想打印一个文件中所有文件的特定标题信息,一个文件比另一个文件低。 这就是我到目前为止所做的Bash shell脚本读取所有文件的特定内容并写入新闻文件,bash,shell,Bash,Shell,我在父目录中有一个扩展名为*sac的文件,这些文件包含地震波形头信息。我想打印一个文件中所有文件的特定标题信息,一个文件比另一个文件低。 这就是我到目前为止所做的 #!/bin/bash file=map for i in ./*sac do SLA=`saclhdr -STLA $i` SLO=`saclhdr -STLO $i` ELA=`saclhdr -EVLA $i` ELO=`saclhdr -EVLO $i` echo "MAP GREAT CIRCLE RAY PAT
#!/bin/bash
file=map
for i in ./*sac
do
SLA=`saclhdr -STLA $i`
SLO=`saclhdr -STLO $i`
ELA=`saclhdr -EVLA $i`
ELO=`saclhdr -EVLO $i`
echo "MAP GREAT CIRCLE RAY PATHS USING PROJECT">file ;
echo "$SLA $SLO " >>file;
echo "$ELA $ELO " >>file;
echo "PLOT EPICENTER LOCATIONS" >>$file;
echo "$ELA $ELO " >>file;
echo "PLOT STATION LOCATIONS">>$file ;
echo "$SLA $SLO " >>file;
done
输出为:
MAP GREAT CIRCLE RAY PATHS USING PROJECT
-10.4807 105.652
-7.7592 67.8257
PLOT EPICENTER LOCATIONS
-7.7592 67.8257
PLOT STATION LOCATIONS
-10.4807 105.652
这里我得到一个文件的打印信息,我想打印所有指定内容的文件
SLA SLO
ELA ELO
所有文件中的一个接一个问题是这一行
echo "MAP GREAT CIRCLE RAY PATHS USING PROJECT">file ;
您正在覆盖内容。使用>>而不是>您需要将其如下所示:
#!/bin/bash
file=map
echo "MAP GREAT CIRCLE RAY PATHS USING PROJECT" > "$file"
for i in ./*sac
do
SLA=$(saclhdr -STLA "$i")
SLO=$(saclhdr -STLO "$i")
ELA=$(saclhdr -EVLA "$i")
ELO=$(saclhdr -EVLO "$i")
echo "$SLA $SLO "
echo "$ELA $ELO "
done >> "$file"
重定向必须放置在for循环体之外,以便连续附加到文件中,而不是在每次转弯时重新创建它。请向我们显示一次示例输入文件。假设您有两个输入文件,输出应该是什么样子的?您能为两个示例文件指定所需的输出吗@rehmanIts可以,但我必须添加更多的行,如