将 .txt 文件中的字符串添加到命令中 – 用于宏

将 .txt 文件中的字符串添加到命令中 – 用于宏

我正在处理多个文件,它们另存为

N.YMDH.U.A.1.SAC    
N.YMDH.U.D.2.SAC  
N.YMDH.U.E.3.SAC  

等等...
我还有一个.txt如下所示的文件,名为YMDH_arrival_time.txt

N.YMDH.U.A.1.SAC    5.000   7.000  
N.YMDH.U.D.2.SAC    7.321   4.313  
N.YMDH.U.E.3.SAC    3.243   7.876  

等等....
我想编写一个脚本,因此,如果文件名匹配,则对涉及同一行$1输入的文件执行一个命令。$2


我一直在尝试
#### 我希望 $file 被 1 by 1 读取,因此 temp_file.txt 只有 1 行长,然后稍后读取相同的文件,并且可以添加 .txt 文件中的值,然后重复过程等。

for file in /Documents/Scaling/YMDH/*.SAC do;

awk '{$1 ~ /$file/ {print $1  $2 $3}' /Documents/Scaling/YMDH_arrival_time.txt > temp_file.txt 

#### in hope to find the row which matches and print that row into a new txt file

SAC <<EOF   

r $file   
CHNDHR T (I want to put the value of $2 of temp_file.txt here)   
w $file.done  
quit   
EOF   
done

任何帮助或替代方法将不胜感激。谢谢

答案1

如果您的YMDH_arrival_time.txt文件具有固定格式<string> <number> <number>- 使用以下内容就足够了grep+方法:

grep -f <(cat /Documents/Scaling/YMDH/*.SAC) YMDH_arrival_time.txt > temp_file.txt

答案2

为了适应您现有的方法,您只需使用

变量=$(cat temp_file.txt)

不过,请检查对 RomanPerekhrest 方法的评论。

相关内容