【问题标题】:Bash concatenate less than sign to string read from fileBash将小于号连接到从文件中读取的字符串
【发布时间】:2017-09-08 15:47:19
【问题描述】:

标题说明了一切。我知道这在不读取文件时是可能的,因为this 有效。但是,当我尝试修改它以从文件中读取值时,我得到了奇怪的结果...

$ num1="1.291858E+01"
$ num2="1E-5"
$ echo $num1'>'$num2
    1.291858E+01>1E-5
$ cat sum.csv
    1.291858e+01
$ num1=`cat sum.csv | sed -e 's/e/E/'`
$ echo $num1
    1.291858E+01
$ echo $num1'>'$num2
    >1E-5858E+01

编辑:

我希望结果是

1.291858E+01>1E-5

这是我直接从终端复制的内容

test $ num1="1.291858E+01"
test $ num2="1E-5"
test $ echo $num1'>'$num2
1.291858E+01>1E-5
test $ cat sum.csv
1.291858e+01
test $ num1=`cat sum.csv | sed -e 's/e/E/'`
test $ echo $num1
1.291858E+01
test $ echo $num1'>'$num2
>1E-5858E+01
test $

【问题讨论】:

  • 习惯性地在双引号中引用变量扩展。
  • 另外,我无法重现最后一行。正如我所期望的那样,它产生1.291858E+01>1E-5。我认为你在搞砸一些你没有告诉我们的事情。
  • 这里有什么问题?提供具有精确预期输出的输入

标签: bash sed concatenation cat


【解决方案1】:

您的行在 sum.csv 中以 control-Ms 结尾,可能是因为它是在 Windows 上创建的。使用cat -v sum.csv 来查看它们并运行dos2unix 或类似的方法来删除它们。

【讨论】:

    猜你喜欢
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 2013-05-17
    • 2018-09-13
    • 2011-09-02
    • 1970-01-01
    相关资源
    最近更新 更多