Bash脚本:读取文本行内的数字

时间:2014-10-27 18:15:24

标签: bash shell

我有一个文件CATALOG.dat,其中包含以下行:

event_017_3916.gz

我需要提取该行的第一个数字(017)。这个数字是启动另一个程序(PROGRAM.C)所必需的,它需要输入数字才能启动(即它应该像$ PROGRAM.C 017一样使用)。实际上,我只需要构建一个命令:

PROGRAM.C 017

在我的shell脚本中。我的问题是:如何读取017并将其设置为可用于构建命令的变量? 非常感谢你的帮助!

3 个答案:

答案 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