【问题标题】:Need to export values stored in 2 different variables to two separate columns in csv file using bash script需要使用 bash 脚本将存储在 2 个不同变量中的值导出到 csv 文件中的两个单独列
【发布时间】:2021-01-07 07:40:47
【问题描述】:

我的 bash 脚本将数据存储在 2 个不同的变量中,例如 -:

Var1="My deployment name is A"
Var2="My deployment url is B"

注意:- Var1 和 Var2 包含多行,因此需要以 csv 格式导出到各自的列,即第一列和第二列。

我想将这 2 个值导出到 CSV 文件,以便 Var1 的值进入同一 CSV 文件的第 1 列和 Var2 到第 2 列。喜欢-

有人可以帮我解决这个问题吗?提前致谢。

【问题讨论】:

  • 用附加要求更新您的问题是可疑的。可能会回滚您的编辑,接受您已经收到的答案(或发布您自己的答案并接受,如果您愿意的话),如果您仍然需要帮助,请发布一个包含您完整要求的新问题。 (但你得到的答案似乎已经涵盖了你的问题。)

标签: bash export-to-csv


【解决方案1】:

两个变量 = 两个单元格

如果变量从不包含特殊符号,如 ", 或换行符,那么它就像

echo "$Var1,$Var2" > file.csv

如果其中可能有特殊符号,则必须引用它们,例如使用

printf '"%s","%s"\n' "${Var1//\"/\"\"}" "${Var2//\"/\"\"}"  > file.csv

两个变量 = 具有多个单元格的两列(每行一个单元格)

不加引号

paste -d, <(echo "$Var1") <(echo "$Var2") > file.csv

带引号

varToCol() {
  sed 's/"/""/g;s/.*/"&"/' <<< "${!1}"
}
paste -d, <(varToCol Var1) <(varToCol Var2) > file.csv

对于纯 bash 解决方案,将函数替换为以下内容。请注意:如果变量以换行符结尾,则下面的 bash 解决方案会在列底部添加一个不必要的空字段。

varToCol() {
  local col="${!1//\"/\"\"}"
  printf %s\\n "\"${col//$'\n'/$'"\n"'}\""
}

【讨论】:

  • 谢谢,不幸的是,这两个选项都不起作用。我的 Var1 - DMC-wfm10 - [cust01-npr01] - 07.01.00 - 15SEP20 AND Var2 的 URL 如下所示 - @ 987654321@
  • 另外,Var1 和 Var2 包含大约 2173 个条目。
  • 你能详细解释一下“没用”吗?我无法真正理解您的第一条评论,因为格式被破坏了,因此模棱两可。难道每个变量都包含多行,并且这些行中的每一个都应该落在自己的单元格中吗?如果是这样,请编辑您的问题和示例,以便包含此重要信息。
  • 抱歉,是的,每个变量都包含多行,我希望变量中的所有行都应打印在第一列中,第二列中的第二个变量也应打印。第一个变量包含部署名称(多行)和第二个变量包含相应部署的 url 链接(再次多行)。
猜你喜欢
  • 2015-12-12
  • 2023-01-20
  • 1970-01-01
  • 2020-11-17
  • 2015-05-19
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
相关资源
最近更新 更多