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



我对bash很陌生,正在尝试编写一个脚本来执行以下操作。

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

13, 243

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

我尝试了以下方法(请注意,文件名是包含文件名的字符串):

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

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

提前感谢您的帮助。

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

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 ' ')

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

sed 's/,//g' 文件

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

注意:未经测试,但只需要稍作调整

相关内容

  • 没有找到相关文章

最新更新