LINUX.ORG.RU

Добавить текст в конец строки sed

 ,


0

1

Добрый день, есть текст в 2 колонки нужно добавлять по значения после каждой строки в 3юю колонку. Сделал таким способом:

sed "s/$/;$ln3/" var >> var1
но он меняет сразу все значения в 3 ей колонке а не построчно. возможно чем то другим?



Последнее исправление: Flover (всего исправлений: 1)

Как он может менять значения в 3-ей колонке, если изначально их всего 2? И что значит «сразу все, а не построчно»? Приведи пример данных до обработки и после.

anonymous
()

Простые фильтры можно писать на awk, perl, python и т.д. Для выбора наиболее удобного инструмента нужно уточнить постановку.

Если входные данные

echo -e 'a b\nc d\ne f '
a b
c d
e f
что ожидается на выходе?

Deleted
()
Ответ на: комментарий от anonymous

до:

600228;undefined
600227;undefined
600232;undefined
600830;undefined
после:
600228;undefined;23.782268 52.111467
600227;undefined;23.782268 52.111467
600232;undefined;23.782268 52.111467
600830;undefined;23.782268 52.111467
Проблема в том, что команда выполняется в цыкле и значение $ln3 постоянно разное и для каждой строчки оно должно быть разное, а получается что везде одинаково. Извините если непонятно изъясняюсь.

Flover
() автор топика
Ответ на: комментарий от Flover

sed в данной ситуации не лучший выбор. Пиши построчный фильтр на bash, perl, python или чем умеешь.

Deleted
()
Ответ на: комментарий от anonymous

у меня вся тема состоит в том как дописат ьв конец строки сэдом или чем то другим. алгорит я и сам знаю

Flover
() автор топика
Ответ на: комментарий от Flover

если «в лоб», то

IFS=';'
while read C1 C2
do 
  LN3=$(xpath -e '//featureMember[1]/GeoObject[1]/Point[1]/pos[1]/text()' result.xml)
  echo "$C1;$C2;$LN3"
done

Deleted
()

Вообще для манипуляции колонками есть paste и cut. Если у тебя ряд данных в виде строк, то склеивать paste - легче лёгкого, причём можно налету без промежуточных файлов.

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