无法从文件中删除字符串之间的空格

时间:2018-05-17 08:21:53

标签: bash jenkins amazon-s3

我有一个文件,其内容如下所示。

$ cat test

static2 deploy

TDPlanValidator-Prod

我正在尝试将这些目录中的内容上传到s3存储桶。问题是s3不接受空格,因此我收到错误。要做到这一点,我试图删除" static2 deploy"之间的空间。这个文件将有大约400个条目,其中一些将有包含空格的目录,例如" static2 deploy"。我写的脚本无法做到这一点。脚本和输出如下。

for i in `cat test`;do var="$( echo "$i" | tr -d ' ' )"; echo $var;done

static2

部署

TDPlanValidator-PROD

我也尝试了sed,但这也不起作用。我想要输出如下,以便我可以在s3桶中推送它

static2deploy

有人可以帮帮我吗?我从昨天起就一直在尝试,但一直无法修复它。

2 个答案:

答案 0 :(得分:0)

for i in `cat test`遍历文件中的每个字符串而不是每一行。

这有效:

cat test | while read line; do var="$( echo "$line" | tr -d ' ' )"; echo $var; done

或更短,如果您只想打印该行:

cat test | while read line; do echo "$line" | tr -d ' '; done

输出:

static2deploy

TDPlanValidator-Prod

答案 1 :(得分:0)

您可以通过以下sed命令

来实现此目的
echo "static2 deploy" | sed "/static2/s/ //g"

它将如何运作? sed首先搜索字符串static2,一旦发现它将搜索该行中的所有空格并将其删除。

因此上面的命令将输出

static2deploy

但如果您尝试以下方法: -

echo "static deploy" | sed "/static2/s/ //g"

输出

static deploy

所以在你的情况下你需要尝试以下: -

cat test | sed "/static2/s/ //g" > output.txt

希望这会有所帮助。