Как первая идея, awk
:
awk -vRS='#[^#]+#' 'RT{gsub(/#/,"",RT);p[RT]=1}END{for(i in p)print i}' the_file
Но это решение может зависеть от других операций, которые необходимо выполнить.
Объяснения согласно просьбе в комментарии.
awk -vRS='#[^#]+#' ' # use /#[^#]+#/ as record separator
RT { # record terminator not empty?
gsub(/#/,"",RT) # remove the # parameter delimiter markup
p[RT]=1 # store it as key in array p
}
END { # end of input?
for (i in p) print i # loop through array p and print each key
}' the_file
Основная часть является использованием RT
(запишите разделитель), встроенная переменная:
RT The record terminator. Gawk sets RT to the input text that matched the character or regular expression specified by RS.
Как первая идея, awk
:
awk -vRS='#[^#]+#' 'RT{gsub(/#/,"",RT);p[RT]=1}END{for(i in p)print i}' the_file
Но это решение может зависеть от других операций, которые необходимо выполнить.
Объяснения согласно просьбе в комментарии.
awk -vRS='#[^#]+#' ' # use /#[^#]+#/ as record separator
RT { # record terminator not empty?
gsub(/#/,"",RT) # remove the # parameter delimiter markup
p[RT]=1 # store it as key in array p
}
END { # end of input?
for (i in p) print i # loop through array p and print each key
}' the_file
Основная часть является использованием RT
(запишите разделитель), встроенная переменная:
RT The record terminator. Gawk sets RT to the input text that matched the character or regular expression specified by RS.
awk
документация, которую я раньше читал, является Руководством пользователя Awk GNU. – manatwork 11.06.2012, 15:08p[RT]
достаточно должен создать список ключей, т.е., он не требует=1
, поскольку это никогда не должно получать доступ ни к каким значениям (это на самом деле быстрее, также)... и также между прочим, очень хорошие +1. – Peter.O 11.06.2012, 23:33