LINUX.ORG.RU

Нужна помощь по скрипту, извлекающему по заданному параметру значение параметра

 , ,


0

3

Нужна помощь в задании, практически сделанное, нужно только немного подтолкнуть к финишу. В общем, имеется файл следующего типа:

----------*------------*---
<параметр 1>    <параметр 2>    <параметр 3>
<параметр 4>         <параметр 5>...
<1-e значение пар.1>    <1-e значение пар.2>...
.....................................
<2-e значение пар.1>       <2-e значение пар.2>....
пробелов между параметрами и значениями много, и они не структурированы, т.е. где-то больше пробелов, где-то меньше Нужно написать скрипт, который по записанному в другом файле имени параметра будет считывать все его значения и записывать их в новый файл. (всего 3 файла) сначала я решил отформатировать исходник, так, чтобы было удобно считывать, вот таким образом:
fold -s -w 10 text.txt > new.txt | sed -i "s/^[ \t]*//;s/[ \t]*$//" new.txt | sed -i "1,2d" new.txt | sed -i "/^$/ d" new.txt
после форматирования в новом файле все слова встали в колонку без пробелов, вот так:
<параметр 1>
<параметр 2>
<параметр 3>
.........
<1-e значение пар.1>
<1-e значение пар.2>
....................
<2-e значение пар.1>
<2-e значение пар.2>
..................
Теперь мне нужно как-то оставить в этом файле только нужный параметр и его значения, при условии, что каждое десятое значение является нужным(так, если нужный параметр находится в строке 2, то его значения в строках 12, 22, ...). Файл с параметром содержит только имя параметра, и больше ничего. Здесь работа встала, потому что я не нашел, как можно с помощью sed это сделать. Делаю задание в bash, разбираться начинал сам с нуля, поэтому если что написано неграмотно, то кидайте в меня обучающие тапки.

практически сделанное

Преувеличение же. Скажем, в свете: «sed -i ...|».

Теперь мне нужно как-то оставить в этом файле

Если отталкиваться отсюда, то можно sed ':l N; /\n\./ ! bl; s/\n\..*//; s/\n//g', но это извращение, кривой формат. Дальше печать нужной колонки (аwk, но можно и sed-ом, только многословно).

anonymous
()

Теперь мне нужно как-то оставить в этом файле только нужный параметр и его значения, при условии, что каждое десятое значение является нужным(так, если нужный параметр находится в строке 2, то его значения в строках 12, 22, ...)

Костылять так костылять по полной.

$ for i in $(seq 2 10 $(wc -l new.txt | awk '{print $1}')); do sed -n $i'p' new.txt >> newnew.txt; done;

justAmoment ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.