将许多变量解析为另一个包含许多行的文件



我在解析通过cut命令提取到另一个包含多行的文件中的许多变量时遇到问题,我需要将变量按顺序设置到每行的末尾。

EX:文件100.txt包含1000行,包含3个字段A、B、C另一个名为pin的文件包含1000行,并包含1个2222 文件

我需要把它一个接一个地插入到100.txt文件的每一行的末尾。

while IFS= read -r line; do
sed -i "/:[0-9]*$/ ! s%$%,$line%" "100.txt"
done < pin.txt

我有什么:

1,2,3,2222,3333
1,2,3,2222,3333

我所期望的:

1,2,3,2222
1,2,3,3333

如果两个文件的行数相同,则paste是您的朋友:

paste -d, 100.txt pin.txt > tmp.txt
mv -f tmp.txt 100.txt

以下是我在没有sed的情况下使用while read循环来完成的操作

while IFS= read -r file1 <&3; do
IFS= read -r file2
printf '%s,%sn' "$file1" "$file2"
done 3<100.txt < pin.txt

仅使用mapfilebash4+

mapfile -t file1 < 100.txt
mapfile -t file2 < pin.txt
for i in "${!file1[@]}"; do
printf '%s,%sn' "${file1[$i]}" "${file2[$i]}"
done
  • 当然,那些shell循环在大数据/大小的文件上会非常慢

最新更新