如何使用Bash从输入文件中删除回车?

时间:2015-11-03 23:10:45

标签: bash

我正在阅读带有Bash的gzip压缩文件。我可以使用zgrep获取rowcount,但是当我将rowcount值存储在变量中时,我认为还存储了回车字符。因此变量存储10

而不是10\r

当我echo变量时,它看起来像一个数字,我看不到回车符。

我试图通过将变量与存储整数的另一个变量进行比较来对变量进行一些数学运算,这就是为什么这会引发错误。

如何删除回车符?

top answer here似乎相关,但我无法弄清done是什么以及如何将其应用于我的情况

这是返回文件行数的函数:campaignFileRowCount=$(zgrep -w "campaign"$today".csv.gz" rowcountfile_"$today".csv.gz | cut -d, -f2)

然后当我尝试执行此操作时echo $((campaignFileRowCount - 0)),我收到错误")syntax error: invalid arithmetic operator (error token is "

1 个答案:

答案 0 :(得分:1)

方法1

替换:

campaignFileRowCount=$(zgrep -w "campaign"$today".csv.gz" rowcountfile_"$today".csv.gz | cut -d, -f2)

使用:

campaignFileRowCount=$(zgrep -w "campaign"$today".csv.gz" rowcountfile_"$today".csv.gz | tr -d '\r' | cut -d, -f2)

命令tr -d '\r'将从输出中删除所有出现的回车符。

方法2

使用命令(需要bash)删除尾随回车:

campaignFileRowCount=${campaignFileRowCount%%$'\r'}

这是后缀删除的示例。 shell从campaignFileRowCount的末尾删除与%%后面显示的模式匹配的任何内容。