在bash中迭代打印csv中现有文本下方的文本
我正在将字符串打印到csv文件。有没有一种方法可以在bash中迭代地在csv文件中预先存在的文本下面添加另一个字符串 例如,假设我当前的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,
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
从中读取数据的文件名。如果您确实希望逗号后面有空格,请务必将其加回去;但这似乎是一个错误。如果你真的想在逗号后面加空格,那么一定要把它们加回去;但这似乎是一个错误。向下的选民,请在这里提及向下投票的原因?向下的选民,请在这里提及向下投票的原因?