Добавить часть 1 матча к другому - PullRequest
0 голосов
/ 04 февраля 2020

Я хочу превратить это ...

1,g2h4,3gf3,2,2030
,,Dog,8
,,Cat,2
,,Fish,5
34,3fds,ds2f,56,4443
,,Pig,12
,,Cow,9
4,fd6sf,kjl9,88,283
,,Mouse,22
1,kqkjw,jfww32,1,987
,,Hen,1

В это ...

,,Dog,8,2,2030
,,Cat,2,2,2030
,,Fish,5,2,2030
,,Pig,12,56,4443
,,Cow,9,56,4443
,,Mouse,22,88,283
,,Hen,1,1,987

Таким образом, выводятся только строки, начинающиеся с ",," с информацией из столбцов 4 и 5 последней строки, начиная с номера, добавляемого в конец.

Я придумал это, но это не работает.

awk -F "," '/^[0-9]/ {nid=$4} {tid=$5} /^,,/ {line=$0} {print line","nid","tid}' 

1 Ответ

2 голосов
/ 04 февраля 2020

Не могли бы вы попробовать следующее.

awk 'BEGIN{FS=OFS=","} /^[0-9]+/{val=$4 OFS $5;next}{$0=$0 OFS val} 1' Input_file

Добавление формы не одного вкладыша вышеуказанного решения.

awk '
BEGIN{
  FS=OFS=","
}
/^[0-9]+/{
  val=$4 OFS $5
  next
}
{
  $0=$0 OFS val
}
1
'  Input_file

Объяснение: Добавление подробного объяснения приведенного выше кода здесь.

awk '             ##Starting awk program from here.
BEGIN{            ##Starting BEGIN section of this code from here.
  FS=OFS=","      ##Setting FS and OFS as comma here for all lines.
}
/^[0-9]+/{        ##Checking condition if a line starts from digits then do following.
  val=$4 OFS $5   ##Creating variable val which has 4th field OFS and 5th field of current line.
  next            ##next will skip all further statements from here.
}
{
  $0=$0 OFS val   ##Setting value of current line to current line OFS and val variable value here.
}
1                 ##Mentioning 1 will print edited/non-edited line here.
'  Input_file     ##mentioning Input_file name here.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...