我在解析通过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
仅使用mapfile
bash4+
。
mapfile -t file1 < 100.txt
mapfile -t file2 < pin.txt
for i in "${!file1[@]}"; do
printf '%s,%sn' "${file1[$i]}" "${file2[$i]}"
done
- 当然,那些shell循环在大数据/大小的文件上会非常慢