在Bash中:从文件中读取两个整数,同时忽略它们之间的字符。

时间:2014-02-19 01:23:09

标签: bash file

我是bash的新手,我正在尝试编写一个脚本来执行以下操作。

我有一个文件:file.txt,看起来像

13, 243

我想让bash脚本读取两个整数并将它们存储为变量

我尝试了以下内容(请注意,fileName是一个包含文件名的字符串):

read -r line <$fileName
line=${line//,/}
for i in $line; do echo $i; done;

将读取该行,删除“,”然后打印出两个整数。但我不确定如何将这两个整数存储在两个不同的变量中。

提前感谢您的帮助。

4 个答案:

答案 0 :(得分:0)

您可以使用cut

$ echo '13, 243' | cut -d, -f1
13
$ echo '13, 243' | cut -d, -f2
 243

额外的空间通常不是问题,但如果你想摆脱它:

$ echo '13, 243' | cut -d, -f2 | tr -d ' '
243

在脚本中,您可以将其用作:

var1=$(echo "$line" | cut -d, -f1)
var2=$(echo "$line" | cut -d, -f2 | tr -d ' ')

答案 1 :(得分:0)

如果您只需要从输入中删除“,”,则可以使用sed快速轻松地执行此操作:

sed's /,// g'file

答案 2 :(得分:0)

#!/bin/bash
line=$(cat testfile | sed 's/ //g')
args=(${line//,/ })
x="${args[0]}"
y="${args[1]}"
echo $x # 13
echo $y # 243

答案 3 :(得分:0)

read file.txt REPLY
#Read into REPLY variable

var1="${REPLY#*, }"
#Strip off the pattern "*, " from string beginning, store in another var
var2="${REPLY%,*}"
#Strip off the pattern ",*" from string end, store in another var

注意:未经测试,但只需要轻微调整