парсинг многих переменных в другой файл содержит много строк - PullRequest
0 голосов
/ 05 апреля 2020

У меня проблема при разборе многих переменных, которые извлекаются командой 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

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Если оба файла имеют одинаковое количество строк, paste ваш друг:

paste -d, 100.txt pin.txt > tmp.txt
mv -f tmp.txt 100.txt
0 голосов
/ 05 апреля 2020

Вот я бы сделал это, используя время чтения l oop без sed

while IFS= read -r file1 <&3; do
  IFS= read -r file2
  printf '%s,%s\n' "$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,%s\n' "${file1[$i]}" "${file2[$i]}"
done
  • Конечно, эти оболочки l oop будут работать очень медленно на больших файлах данных / размеров.
...