如何使用bash将文本文件数据写入excel的同一单元格

时间:2017-06-27 05:36:11

标签: excel bash shell

我有一个场景,我想将文本文件的所有输出重定向到excel的单个单元格。

文本文件数据:

"remove dead code" 
"keep cassandra and postgres in OR condition"
"InsertFailCDRList"
"to be updated in error handling US, write TODO here in comments"

我想在我的一栏中提供这些数据。 例如。

    C1             C2
    1            TEXT FILE OUTPUT HERE
    2            OTHER TEXT FILE OUTPUT HERE

但问题是文本不是单个单元格,而是传播到多个单元格。

使用命令:

#!/bin/bash  -x
output=$(cat commentmessage.txt)
number=1
echo $number,"${output}" > buc_review_comments_data3.csv

输出就像:

        C1             C2
         1            "remove dead code"
        "keep cassandra and postgres in OR coniditon"
        "InsterFailCDRList"

我希望所有人都在第1行第2列。我们如何使用bash执行此操作?请帮忙。

期望的输出:

       C1                C2
        1            "remove dead code"
                     "keep cassandra and postgres in OR coniditon"
                      "InsterFailCDRList"

        2             "new data here"
                      "new data"

Format required - this is result wanted

所以基本上,我有 ID = BUC123

totalcomments = 4

文本文件 - 包含多条评论。

在excel中想要以上格式的这些。

1 个答案:

答案 0 :(得分:1)

您可以使用while循环迭代输入文件的内容,然后在每行前面加上您的号码:

#!/bin/bash
infile=commentmessage.txt
outfile=buc_review_comments_data3.csv
number=1

while read line
do
    echo "$number","$line"
done < "$infile" > "$outfile"

让我补充一些提示:

  • 大括号主要用于将变量名称与双引号内的变量名称中允许的其他字符分开,例如:"${myvar}otherstuff"。但它们也可以增强代码的可读性。在您的示例中,您也可以执行echo "$number,$line"(因为变量名称中不允许使用,),但echo "${number},${line}可以很好地清楚您的变量名称是什么,同时保存单独引用。
  • 虽然您的示例中没有必要引用$number,但最佳做法是you should always double-quote your variable expansions
  • 如果您只是从文件中读取,请使用重定向(<)而不是cat,请参阅Useless Use of cat