Stack Overflow Asked by Valentyn on September 5, 2020
I’m working on a simple awk script: awk -f file.awk test.txt
. My function:
{
split($1, arr, "[()()]")
for (i in arr) {
print(arr[i])
}
}
My test file:
1(2)V2(9)
I’m getting
1
2
V2
9
How can I get values only in brackets?
2
9
A count of values in brackets can be different.
You may get it using match
function:
awk '{s=$1; while (match(s, /([^)]*)/ )) {
print substr(s, RSTART+1, RLENGTH-2); s=substr(s, RSTART+1)}}' <<< "1(2)V2(9)"
2
9
Correct answer by anubhava on September 5, 2020
With GNU awk for multi-char RS and RT:
$ awk -v RS='[(][^)]+)' -F'[()]' '$0=RT{print $2}' file
2
9
Answered by Ed Morton on September 5, 2020
With GNU awk you can use FPAT
(field pattern) to specify how a field looks like, rather than being limited to specify a delimiter. That's handy in this case:
echo "1(2)V2(9)" |
gawk '{for(i=1;i<=NF;i++){gsub(/[()]/,"",$i);print $i}}' FPAT="[(][^)]+[)]"
2
9
Answered by hek2mgl on September 5, 2020
4 Asked on December 5, 2021 by cow
0 Asked on December 5, 2021 by nippledisaster
2 Asked on December 5, 2021 by chalupabatmac
1 Asked on December 5, 2021 by prateek-singh
2 Asked on December 5, 2021 by robert-little
1 Asked on December 5, 2021 by user49404
1 Asked on December 5, 2021 by cosimoth
1 Asked on December 5, 2021 by stephen-horton
1 Asked on December 5, 2021 by kchou612
1 Asked on December 5, 2021 by tom-schreck
2 Asked on December 5, 2021 by andrea-dattero
1 Asked on December 5, 2021 by tamas-toth
4 Asked on December 5, 2021 by dragos-strugar
1 Asked on December 5, 2021 by user881667
firebase firebase authentication jestjs react testing library reactjs
2 Asked on December 5, 2021 by zenith2198
1 Asked on December 5, 2021 by ahmad-idrees
Get help from others!
Recent Questions
Recent Answers
© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP