Решено! Просто поставить сложный элемент в двойные кавычки...
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;
Как насчет решения awk
?
awk '(FNR>1) && (FNR%10<2)' file
FNR
— это awk
s, автоматически обновляемый на -строку файла -счетчик {... }
), которое оценивается как «истина» (, и будь то строка 1
), предписывает awk
напечатать текущую строку, включая все изменения, сделанные до сих пор. (FNR>1) && (FNR%10<2)
напечатает текущую строку, если это не первая строка, и если номер строки является целым числом, кратным 10 (или +1 от такого кратного не более ). Это эквивалентно «каждому 10-му, строке и последующим». Используйте 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'
Используя 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