我需要读取只有一行的ASCII文件coordinates.ascii
:
-I0.00130000258937/0.000899999864241
在bash脚本中,属性0.00130000258937
为变量x_inc
,0.000899999864241
为y_inc
。
猜测x_inc
的正则表达式是:
(\d.\d+)(?=/)
但我不知道y_inc的正则表达式以及sed或grep命令/语法在bash中实现regexp ..
x_inc=$(sed -n '(\d.\d+)(?=/)' coordinates.ascii ) # does not work!!!
答案 0 :(得分:5)
只是使用bash:
$ IFS="I/" read _ x_inc y_inc < coordinates.ascii
$ echo $x_inc
0.00130000258937
$ echo $y_inc
0.000899999864241
答案 1 :(得分:0)
使用awk
x_inc=$(awk -F"[I/]" '{print $2}' coordinates.ascii)
echo $x_inc
0.00130000258937
y_inc=$(awk -F"[I/]" '{print $3}' coordinates.ascii)
答案 2 :(得分:0)
以下是使用sed
和read
的另一个版本。它一次读取两个变量:
read -r x_inc y_inc <<<$(sed 's@[-I/]@ @g' < coordinates.ascii);
# $x_inc is now: 0.00130000258937
# $y_inc is now: 0.000899999864241
编辑:或根据评论
中建议的流程替换read -r x_inc y_inc < <(sed 's@[-I/]@ @g' < coordinates.ascii);