![Записать файл с 2 столбцами с помощью скрипта оболочки](https://rvso.com/image/154447/%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C%20%D1%84%D0%B0%D0%B9%D0%BB%20%D1%81%202%20%D1%81%D1%82%D0%BE%D0%BB%D0%B1%D1%86%D0%B0%D0%BC%D0%B8%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%20%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B8.png)
Как можно вывести переменные в выходной файл в два или более столбцов ( echo
например, используя). У меня есть следующее:
grep -oP 'value\s*=\s*\K.*' file >x_vs_y # x values
for X in $(seq 0 50 400)
do
echo "$X" >>x_vs_y # y values
done
Вывод: (x_vs_y)
1.08759432363
1.08477216702
1.08211988431
1.07947977045
1.07685185457
1.07423631941
1.07163282502
1.06904156798
1.06646245052
0
50
100
150
200
250
300
350
400
С помощью этого скрипта я получаю выходной файл в одном столбце (18x1), но мне нужно получить массив 9x2 (X против Y), например:
Вывод: (x_vs_y)
1.08759432363 0
1.08477216702 50
1.08211988431 100
1.07947977045 150
1.07685185457 200
1.07423631941 250
1.07163282502 300
1.06904156798 350
1.06646245052 400
решение1
Рассмотрим этот входной файл:
$ cat file
value = 1.08759432363
value = 1.08477216702
value = 1.08211988431
value = 1.07947977045
value = 1.07685185457
value = 1.07423631941
value = 1.07163282502
value = 1.06904156798
value = 1.06646245052
Чтобы напечатать два столбца:
$ awk '{print x+0, $3; x+=50}' file
0 1.08759432363
50 1.08477216702
100 1.08211988431
150 1.07947977045
200 1.07685185457
250 1.07423631941
300 1.07163282502
350 1.06904156798
400 1.06646245052
Сохранение вывода в файле
$ awk '0==a[$0]++' file >outfile
$ cat outfile
value = 1.08759432363
value = 1.08477216702
value = 1.08211988431
value = 1.07947977045
value = 1.07685185457
value = 1.07423631941
value = 1.07163282502
value = 1.06904156798
value = 1.06646245052
решение2
Возможно, комбинация paste
и seq
может быть проще:
paste datafile <( seq 0 50 $(( ($(wc -l datafile | cut -d' ' -f1 )-1)*50 )) ) > output
Последнее значение seq
основано только на номерах строк в вашем входном файле данных.