Bash shell脚本读取所有文件的特定内容并写入新闻文件

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

我在父目录中有一个扩展名为*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 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可以,但我必须添加更多的行,如