bash (awk) разделенная строка - PullRequest
0 голосов
/ 31 мая 2018

У меня есть строка:

b="123 321 || 431543 653 || 039 ||"

Я использую «||» в качестве разделителя.Я хочу разделить его на 3 строки:

123 321
431543 653
039 ||

Когда я пытаюсь разделить его с помощью bash:

for element in ${b//" || "/ } ; do echo $element; done

Результат:

123
321
431543
653
039
||

Когда яиспользуйте awk - у меня тот же результат (я получаю только первое число, но ожидаемый результат будет "123 321"):

echo $b |awk '{split($0,a," || "); print a[1]}'
123

1 Ответ

0 голосов
/ 31 мая 2018

вам нужно экранировать символ трубы

$ awk -v b="123 321 || 431543 653 || 039 ||" 'BEGIN{print split(b,a," \\|\\| ")}'
3

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...