Trying to fetch specific number which is linked to a string -
Input:
"9999 somekeyword --server1=1234 --server2=1011 --server3=1234 somekeyword 1234 somenumber"
Expected Output:
"1234:server1|1011:server2|1234:server3|9999:process"
Here is my sed code which is working fine as expected and looking for alternative in python -
echo "9999 somekeyword --server1=1234 --server2=1011 --server3=1234 somekeyword 1234 somenumber" \
| sed -r "s/([0-9]+) .+--server1=([0-9]+).+--server2=([0-9]+).+--server3=([0-9]+).+/\2:server1|\3:server2|\4:server3|\1:process/g"
1234:server1|1011:server2|1234:server3|9999:process
I am trying to get the same output in python using below -
p1="9999 somekeyword --server1=1234 --server2=1011 --server3=1234 somekeyword 1234 somenumber"
array = re.findall(r'[0-9]+',p1)
print(array)
['9999', '1', '1234', '2', '1011', '3', '1234', '1234']
any suggestion to get the desired output.
Why not simply:
import re
p1="9999 somekeyword --server1=1234 --server2=1011 --server3=1234 somekeyword 1234 somenumber"
array = re.findall(r'(\d+) .+--server1=(\d+).+--server2=(\d+).+--server3=(\d+).+',p1)
print(array) # >> [('9999', '1234', '1011', '1234')]
import re
p1="9999 somekeyword --server1=1234 --server2=1011 --server3=1234 somekeyword 1234 somenumber"
array = re.findall(r'server\d=[0-9]+',p1)
process = re.findall(r'^\d+',p1)
'|'.join([i.split('=')[-1]+':'+i.split('=')[0] for i in array]) + '|' + process[0] + ':process'
#'1234:server1|1011:server2|1234:server3|9999:process'
How's this?
import re
proc = p1.split()[0]
d = {'process': proc}
for server, value in re.findall(r'--server(\d+)=(\d+)', p1[len(proc)+1:]):
d[server] = value
Here you go (with Python 3.6 f
-formatting):
import re
s = "9999 somekeyword --server1=1234 --server2=1011 --server3=1234 somekeyword 1234 somenumber"
res = ''
for m in re.findall(r'(?:([0-9]+) \S+)?\s+--(server\d+)=(\d+)', s):
if m[0]: proc = f'{m[0]}:process' # capture process number
res += f'{m[2]}:{m[1]}|'
res += proc
print(res) # 1234:server1|1011:server2|1234:server3|9999:process
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.