bash регулярное выражение сопоставляет необязательную подстроку с разделителями группы

Оператор == всегда предназначен для сравнения ссылок на объекты, тогда как метод сравнения строк .equals () переопределяется для сравнения содержимого:

String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2); // It prints false (reference comparison)
System.out.println(s1.equals(s2)); // It prints true (content comparison)
0
задан Zachary 18 January 2019 в 01:25
поделиться

2 ответа

Вы можете попробовать Perl

$ echo "a1 b2 c3 )@in#( d4 e5 f6 )@out#( g7 h8 i9" | perl -lne ' @a=split(/\s*\)\@in#\(\s*|\s*\)\@out#\(\s*/); print join("\n",@a) '
a1 b2 c3
d4 e5 f6
g7 h8 i9

$ echo "a1 b2 c3 )@in#( d4 e5 f6 g7 h8 i9" | perl -lne ' @a=split(/\s*\)\@in#\(\s*|\s*\)\@out#\(\s*/); print join("\n",@a) '
a1 b2 c3
d4 e5 f6 g7 h8 i9

$

Вы можете прочитать вывод, пройдя через цикл while

$ echo "a1 b2 c3 )@in#( d4 e5 f6 g7 h8 i9" | perl -lne ' @a=split(/\s*\)\@in#\(\s*|\s*\)\@out#\(\s*/); print join("\n",@a) ' | while read x;do; echo "val=$x"; done
val=a1 b2 c3
val=d4 e5 f6 g7 h8 i9
$

или распечатать каждое значение arr в perl и прочитать их по одному один

$ echo "a1 b2 c3 )@in#( d4 e5 f6 g7 h8 i9" | perl -lne ' @a=split(/\s*\)\@in#\(\s*|\s*\)\@out#\(\s*/); print $a[0] ' | read x1
$ echo $x1
a1 b2 c3
$

$ echo "a1 b2 c3 )@in#( d4 e5 f6 g7 h8 i9" | perl -lne ' @a=split(/\s*\)\@in#\(\s*|\s*\)\@out#\(\s*/); print $a[1] ' | read x2
$ echo $x2
d4 e5 f6 g7 h8 i9
$
0
ответ дан stack0114106 18 January 2019 в 01:25
поделиться

Мое окончательное решение заключается в следующем:

IFS= 
  1. Установите IFS в \n.
  2. Вместо вывода на стандартный вывод я назначаю вывод массиву .
  3. Обратите внимание на дополнительные скобки снаружи.

Вот две ссылки:

  1. https://stackoverflow.com/a/21130572/2336707
  2. https: //stackoverflow.com/a/42635720/2336707
\n' _log_array=( $( awk -F'[[:space:]]*\\)@(in|out)#\\([[:space:]]*' '{ print NF; for (i = 1; i <= NF; ++i) print $i; }' <<< $s ) )
  1. Установите IFS в \n.
  2. Вместо вывода на стандартный вывод я назначаю вывод массиву .
  3. Обратите внимание на дополнительные скобки снаружи.

Вот две ссылки:

  1. https://stackoverflow.com/a/21130572/2336707
  2. https: //stackoverflow.com/a/42635720/2336707
0
ответ дан Zachary 18 January 2019 в 01:25
поделиться
Другие вопросы по тегам:

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