我正在处理多个文件,它们另存为
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 方法的评论。