You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Bash脚本同时逐行读取两个CSV文件并格式化输出

实现两个文件对应行拼接的Bash脚本方法

这里提供几种简单高效的Bash脚本实现方式,满足你将file1.csv和file2.csv对应行拼接为[内容1] and [内容2]格式的需求:

方法1:使用paste+sed(最简洁)

paste命令天生用于按行合并多个文件,配合sed替换分隔符即可:

paste file1.csv file2.csv | sed 's/\t/ and /'
  • 原理:paste默认用制表符(\t)分隔两个文件的对应行内容,sed将制表符替换为指定的and字符串。

方法2:使用awk命令(灵活可控)

awk可以直接处理多文件的行关联,逻辑清晰:

awk 'NR==FNR{a[NR]=$0;next}{print a[NR], "and", $0}' file1.csv file2.csv
  • 原理:
    • NR==FNR:处理第一个文件(file1.csv)时,将每行内容存入数组a,索引为行号NR;
    • next:跳过后续逻辑,继续处理第一个文件的下一行;
    • 处理第二个文件(file2.csv)时,取出数组中对应行号的内容,与当前行拼接输出。

方法3:使用while循环(基础逻辑演示)

如果需要更直观的逐行读取逻辑,可以用文件描述符配合循环:

#!/bin/bash
# 打开文件描述符关联两个文件
exec 3<file1.csv
exec 4<file2.csv

# 循环读取每行,直到其中一个文件结束
while read -r line1 <&3 && read -r line2 <&4; do
    echo "$line1 and $line2"
done

# 关闭文件描述符
exec 3<&-
exec 4<&-
  • 原理:通过文件描述符3和4分别关联两个文件,循环中同时读取两行内容并拼接输出,最后关闭描述符释放资源。

以上三种方法运行后,都会输出预期结果:

a and 1
b and 2
c and 3
d and 4

内容的提问来源于stack exchange,提问作者Pisers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 06:13:13