Unix: Распечатать дополнительный столбец значений в файл

Мне нужно было сначала запустить

sudo apt-get install pkg-config

перед запуском

./autogen.sh
1
02.07.2017, 06:15
3 ответа

Вы можете сделать это с помощью GNU dcследующим образом:

< new_file.txt tr -- - _ | dc -e "[q]sq [?z1=qrd1<qrn32anp0.005+dd=?]s? 0l?x"

Объяснение:

dc -e '
# macro for quitting
[q]sq

# macro to read next line and perform operations
[
   ? z1=q  # read next line and quit when it is empty. The 1 is apriori
   r       # else, reverse the stack elements so that sum is top of stack now
   d1<q    # quit if current sum is more than 1
   r       # else, reverse the stack elements so that line is top of stack now
   n 32an p # print the line, space (32a is ascii decimal for space), & print current sum
   0.005+   # update the current sum for next round
   dd=?     # recursively invoke itself for more.... its a loop essentially
]s?

# initialize stack and start operations
0 l?x
'
0
27.01.2020, 23:33

Как упоминалось в комментариях, paste— лучший вариант делать то, что вы хотите.

 paste new_file.txt <sequence file>

Если вы хотите создать последовательность во время выполнения

seq 0 0.005 1 | paste new_file.txt /dev/stdin

Пример (для 5 записей вnew_file.txt)

~$ seq 0 0.005 0.020 | paste new_file.txt /dev/stdin
2.41    0.000
2.56    0.005
2.71    0.010
2.86    0.015
3.01    0.020

Примечание. :Если в каком-либо файле/команде есть дополнительные строки, соответствующие строки в выводе будут пустыми. Поэтому убедитесь, что оба файла имеют одинаковое количество строк.

1
27.01.2020, 23:33

С seqиpaste:

seq 0 0.005 1 | paste newfile.txt - > newerfile.txt

Сawk

awk '{$2 = 0.005*(NR-1)} 1' OFS='\t' newfile.txt > newerfile.txt

В зависимости от вашей версии awkвы можете изменить newfile.txtна месте.

1
27.01.2020, 23:33

Теги

Похожие вопросы