bash вставить несколько столбцов в один файл - PullRequest
0 голосов
/ 03 апреля 2020

Я запускаю команду в al oop, чтобы создать файл с n числом столбцов. Для примера, скажем, 10, чтобы сделать его простым. Например:

# Run the command to produce the data. Pipe the output to a temp file
${command here} > tmp1.txt

# We have a bit of superfluous information, so just pipe the output we need
tail -n +7 tmp1.txt | awk '{print $7}' > tmp2.txt

Приведенная выше команда просто создаст один файл с 1 столбцом данных.

Проблема в том, что я хочу, чтобы все это было заключено в al oop для запуска n количество раз. Следовательно, tmp3.txt (вывод) должен иметь n столбцов. Когда я попытался добавить следующую команду:

for i in {1..10}
do
  ${command here} > tmp1.txt
  tail -n +7 tmp1.txt | awk '{print $7}' > tmp2.txt
  if [[ ! -f tmp3.txt ]]
  then
    cp tmp2.txt tmp3.txt
  else
    paste -d' ' tmp2.txt tmp3.txt >> tmp3.txt
  fi
done

Файл взрывается, и мне не хватает памяти даже после 3 или 4 итераций. Как бы я достиг желаемого? Было бы обременительно выписывать 30-50 раз и вставлять каждый файл по отдельности.

1 Ответ

0 голосов
/ 04 апреля 2020

try

paste -d' ' tmp2.txt tmp3.txt > tmp4.txt  &&  mv tmp4.txt tmp3.txt

Никогда не читайте и не пишите в одном файле.

...