我有一个文件CATALOG.dat,其中包含以下行:
event_017_3916.gz
我需要提取该行的第一个数字(017)。这个数字是启动另一个程序(PROGRAM.C)所必需的,它需要输入数字才能启动(即它应该像$ PROGRAM.C 017一样使用)。实际上,我只需要构建一个命令:
PROGRAM.C 017
在我的shell脚本中。我的问题是:如何读取017并将其设置为可用于构建命令的变量? 非常感谢你的帮助!
答案 0 :(得分:0)
awk
解决方案:
awk -F_ '{print $2}' file
将分隔符设置为_
(-F_
)并打印第二个(print $2
)字段(存储017
的位置)
要运行该文件并将其保存到变量($line
包含017
)中:
while read line
do
echo " > $line"
PROGRAM.C $line
done < <(awk -F_ '{print $2}' file)
此外,您可以使用xargs
执行命令:
awk -F_ '{print $2}' file | xargs PROGRAM.C
对文件中的每一行执行PROGRAM.C xyz
,其中xzy
是提取的数字。
答案 1 :(得分:0)
我的解决方案:
awk -F "_" '{print $2}' | xargs -n1 PROGRAM.C
答案 2 :(得分:0)
while IFS=_ read event first_num rest ; do
echo "PROGRAM.C $first_num"
done <CATALOG.dat