在bash中迭代打印csv中现有文本下方的文本

在bash中迭代打印csv中现有文本下方的文本,bash,awk,sed,Bash,Awk,Sed,我正在将字符串打印到csv文件。有没有一种方法可以在bash中迭代地在csv文件中预先存在的文本下面添加另一个字符串 例如,假设我当前的csv文件如下所示 12, hello, english 13, hola, espanol 14, hat tip!, british 字符串的下一次迭代应该在上面的文本下面追加文本,使其看起来像下面的文本,依此类推 12, hello, english 13, hola, espanol 14, hat tip!, british 15, namaste,

我正在将字符串打印到csv文件。有没有一种方法可以在bash中迭代地在csv文件中预先存在的文本下面添加另一个字符串

例如,假设我当前的csv文件如下所示

12, hello, english
13, hola, espanol
14, hat tip!, british
字符串的下一次迭代应该在上面的文本下面追加文本,使其看起来像下面的文本,依此类推

12, hello, english
13, hola, espanol
14, hat tip!, british
15, namaste, hindi 
16, hallo, german
EDIT:在中,您有一组字符串要连接到输入文件的输出,然后您可以在
awk
命令中提及它们,然后可以像()一样使用它,这样您就不需要硬编码任何内容:

awk '
BEGIN{
  FS=OFS=", ";
  num=split("namaste, hindi;hallo, german",array,";")
}
1;
END{
  val=$1;
  for(i=1;i<=num;i++){
    print ++val,array[i]}
}'  Input_file
解决方案2:考虑到新文件中存在新行,使用简单的
cat
命令。因此,它将是:

cat Input_file Input_file_with_new_lines
上面将只在控制台上打印它们,以防您想保存输入文件本身,然后在上面的代码中附加以下内容

EDIT:在中,您有一组字符串要连接到输入文件的输出,然后您可以在
awk
命令中提及它们,然后可以像()一样使用它,这样您就不需要硬编码任何内容:

awk '
BEGIN{
  FS=OFS=", ";
  num=split("namaste, hindi;hallo, german",array,";")
}
1;
END{
  val=$1;
  for(i=1;i<=num;i++){
    print ++val,array[i]}
}'  Input_file
解决方案2:考虑到新文件中存在新行,使用简单的
cat
命令。因此,它将是:

cat Input_file Input_file_with_new_lines
上面将只在控制台上打印它们,以防您想保存输入文件本身,然后在上面的代码中附加以下内容

输出:

12, hello, english 13, hola, espanol 14, hat tip!, british 15, namaste, hindi 16, hallo, german 你好,英语 13,你好,埃斯帕诺 14、帽尖!,英国的 15,纳马斯特语,印地语 16,你好,德语 输出:

12, hello, english 13, hola, espanol 14, hat tip!, british 15, namaste, hindi 16, hallo, german 你好,英语 13,你好,埃斯帕诺 14、帽尖!,英国的 15,纳马斯特语,印地语 16,你好,德语
bash重定向操作符
>
附加到输出文件的末尾

printf '%i,%s,%s\n' \
    15 "namaste" "hindi" \
    16 "hallo" "german" >>file.csv
你的问题听起来很模糊,好像你想在某种循环中这样做。注意如何

while condition; do
    something >>file
done
效率明显低于

while condition; do
    something
done >>file

因为在前一种情况下,shell必须重新打开,寻找文件的结尾,并在循环中反复关闭文件句柄。(好的,搜索是由操作系统完成的,但它仍然不是免费的。)

bash重定向操作符
>
附加到输出文件的末尾

printf '%i,%s,%s\n' \
    15 "namaste" "hindi" \
    16 "hallo" "german" >>file.csv
你的问题听起来很模糊,好像你想在某种循环中这样做。注意如何

while condition; do
    something >>file
done
效率明显低于

while condition; do
    something
done >>file

因为在前一种情况下,shell必须重新打开,寻找文件的结尾,并在循环中反复关闭文件句柄。(好吧,搜索是由操作系统完成的,但它仍然不是免费的。)

请尝试在您的帖子中添加您为解决问题所做的努力,因为我们都在这里学习。干杯,继续学习,继续分享。请尝试在你的帖子中加入你的努力,你已经解决了你的问题,因为我们都在这里学习。干杯,继续学习,继续分享。嗨,赛勒斯,谢谢你的回复。如果要从变量引用后续变量,然后将其输出到csv。我可以这样写吗
awk'BEGIN{FS=OFS=“,”}{print}END{print++$1,“$secondstring”}>output.csv
这可能会有帮助:
secondstring=“foobar”;awk-v str=“$secondstring”'BEGIN{FS=OFS=“,”}{print}END{print++$1,str}文件
结尾的后缀“file”用于将文本输出到csv?@kaushalkapor,请用完整信息编辑您的帖子,不建议在评论中添加您的要求,请这样做。
file
在我的示例中是
awk
读取数据的文件名。嗨,赛勒斯,谢谢你的回复。如果要从变量引用后续变量,然后将其输出到csv。我可以这样写吗
awk'BEGIN{FS=OFS=“,”}{print}END{print++$1,“$secondstring”}>output.csv
这可能会有帮助:
secondstring=“foobar”;awk-v str=“$secondstring”'BEGIN{FS=OFS=“,”}{print}END{print++$1,str}文件
结尾的后缀“file”用于将文本输出到csv?@kaushalkapor,请用完整信息编辑您的帖子,不建议在评论中添加您的要求,请这样做。
file
在我的示例中是
awk
从中读取数据的文件名。如果您确实希望逗号后面有空格,请务必将其加回去;但这似乎是一个错误。如果你真的想在逗号后面加空格,那么一定要把它们加回去;但这似乎是一个错误。向下的选民,请在这里提及向下投票的原因?向下的选民,请在这里提及向下投票的原因?