sed со следующей строкой (`+N `опция )и частота (`~N `)вместе

Решено! Просто поставить сложный элемент в двойные кавычки...

SELECT Price_List__r.* 
FROM t3, 
     JSON_TABLE(json_col, '$.market_order__c.market_order_line__c[*].market_order_line_details__c[*]."PriceItem__r.Price_List__r"' COLUMNS (
                External_ID__c Char(20) PATH '$.External_ID__c',
                Currency__c Char(20) PATH '$.Currency__c',
                Version__c Char(20) PATH '$.Version__c')
     ) Price_List__r;     
4
30.10.2020, 13:12
3 ответа

Как насчет решения awk?

awk '(FNR>1) && (FNR%10<2)' file
  • FNR— это awks, автоматически обновляемый на -строку файла -счетчик
  • Любое условие за пределами «блока правил» ({... }), которое оценивается как «истина» (, и будь то строка 1), предписывает awkнапечатать текущую строку, включая все изменения, сделанные до сих пор.
  • Итак, (FNR>1) && (FNR%10<2)напечатает текущую строку, если это не первая строка, и если номер строки является целым числом, кратным 10 (или +1 от такого кратного не более ). Это эквивалентно «каждому 10-му, строке и последующим».
7
18.03.2021, 22:53

Используйте ADDR1,ADDR2с FIRST~STEPкак ADDR1и +OFFSETкак ADDR2, поэтому:

$ seq 30 | sed '10~10,+1!d'
10
11
20
21
30

В любом случае обратите внимание, что и ~, и +не являются -стандартными расширениями GNU.

Подробнее см. info sed 'line selection'и info sed 'range of lines'в системе GNU.

В POSIX вы должны использовать:

seq 30 | sed -n '1n;n;n;n;n;n;n;n;n;p;n;p'
10
18.03.2021, 22:53

Используя awk, мы можем сделать так, как показано. NR - это номер строки на языке awk.

$ awk 'NR ~ /.[10]$/'  file

С помощью sedмы могли бы сделать, как показано ниже, где мы увеличиваем пробел до тех пор, пока не достигнем 10 отсчетов новых строк.

$ sed -nE 'x
  /\n{9}/{
    z;x;$d
    N;p;D
  }
  s/$/\n/;h
' file
$ perl -ne '$.%10||print($_.<>)' file
3
18.03.2021, 22:53

Теги

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