我有一个文件,其内容如下所示。
$ 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
有人可以帮帮我吗?我从昨天起就一直在尝试,但一直无法修复它。
答案 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
希望这会有所帮助。