Complicated Notepad++ copy, replace, and insert [closed] - json

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 4 years ago.
Improve this question
I have a list of various unrelated strings on separate lines in Notepad++.
127.0.0.1
badwebsite.com
dontgohere.com
How do I use Notepad++ to create something like the below?
{"blocked":true,"flagged":true,"string":"127.0.0.1","javaClass":"com.untangle.uvm.app.GenericRule","name":null,"description":"127.0.0.1","readOnly":null,"id":null,"category":null,"enabled":null}
I basically want to copy the contents of the line to use again. First, I need to prepend it with this:
{"blocked":true,"flagged":true,"string":"
Next is the original line contents:
127.0.0.1
Then, I would insert the following content:
","javaClass":"com.untangle.uvm.app.GenericRule","name":null,"description":"
Afterwards, the original contents of the line would be repeated:
127.0.0.1
Finally, I would append it with the following:
","readOnly":null,"id":null,"category":null,"enabled":null}
I do know that I would use the replace feature with regular expression to search for ^ and replace with whatever I want at the start of the line and I would search for $ and replace with whatever I want at the end of the line. Unfortunately, I don't know how to repeat the contents of a line while inserting a string.

In Notepad++ you can use Replace with regular expression enabled and find:
^(.+)$
which finds a set of characters between the start and end of a line and stores them in a capture group which we can refer to using $1 in the replacement string:
{"blocked":true,"flagged":true,"string":"$1","javaClass":"com.untangle.uvm.app.GenericRule","name":null,"description":"$1","readOnly":null,"id":null,"category":null,"enabled":null}
Output:
{"blocked":true,"flagged":true,"string":"127.0.0.1","javaClass":"com.untangle.uvm.app.GenericRule","name":null,"description":"127.0.0.1","readOnly":null,"id":null,"category":null,"enabled":null}
{"blocked":true,"flagged":true,"string":"badwebsite.com","javaClass":"com.untangle.uvm.app.GenericRule","name":null,"description":"badwebsite.com","readOnly":null,"id":null,"category":null,"enabled":null}
{"blocked":true,"flagged":true,"string":"dontgohere.com","javaClass":"com.untangle.uvm.app.GenericRule","name":null,"description":"dontgohere.com","readOnly":null,"id":null,"category":null,"enabled":null}

Related

Converting tomcat logs to CSV using sed [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed last year.
Improve this question
I have some application log data on a Linux server, which looks like this:
Jan 11 14:24:42 AttackSimulator.abcd [1587566256,49294,"ryan.wright#abcd.com",3237159933,1,0,0,3,"2314","https",443,2899903330,"https://googleads.g.doubleclick.net/pagead/ads",0,"","","","","1 - Default Policy","","googleads.g.doubleclick.net","GET",4,0,5]
Jan 11 14:24:42 AttackSimulator.abcd [1587566256,49294,"melisa.zeunert#abcd.com",3237159933,1,0,0,3,"2339,37788","http",80,387803624,"http://ping.citrix.com",0,"","","","","3 - Extended Policy High","","ping.citrix.com","HEAD",3,0,4]
I want to output this in a CSV file. Everything between the [ ] should be part of the CSV with column names such as DateandTime, AccountID, UserID, ClientIP etc. Something that looks like this:
DateandTime, AccountID, UserID, ClientIP
1587566256,49294,"ryan.wright#abcd.com",3237159933
1587566256,49294,"melisa.zeunert#abcd.com",3237159933
(This is just an example with only 4 columns. Actual output would have 25)
Any input would be helpful
Using sed
$ sed 's/.*\[\(.*\)]/\1/;1iDateandTime, AccountID, UserID, ClientIP ' file
DateandTime, AccountID, UserID, ClientIP
1587566256,49294,"ryan.wright#scnx.com",3237159933,1,0,0,3,"2314","https",443,2899903330,"https://googleads.g.doubleclick.net/pagead/ads",0,"","","","","1 - Default Policy","","googleads.g.doubleclick.net","GET",4,0,5
1587566256,49294,"melisa.zeunert#scnx.com",3237159933,1,0,0,3,"2339,37788","http",80,387803624,"http://ping.citrix.com",0,"","","","","3 - Extended Policy High","","ping.citrix.com","HEAD",3,0,4
.*\[ - Exclude everything up to the last [ square bracket.
\(.*\)] - Include everything within the parenthesis up to the last ] square bracket
\1 - Return with back reference the contents stored inside the parenthesis
1i - Insert on line 1

How to extract the domain in a string by using regex? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 1 year ago.
Improve this question
I got a string representing users data.
What is the proper regex to extract domain in this string?
I know that I have to find all strings with 2 characters matching the condition that it comes after the last "." after a "#".
However I still failed to implement it.
import re
regex = r"#.+\.([a-z]{2}),"
your_string = ("001,Francisca,Dr Jhonaci,jhonadr#abc.com,32yearsold,120.238.225.0\n"
"002,Lavenda,Bocina,lavenboci#banck.ac.uk,50yearsold,121.186.221.182\n"
"003,Laura,Eglington,elinton#python.co.jp,26yearsold,36.55.173.63\n"
"004,Timo,Baum,timobaum#tennis.co.cn,22yearsold,121.121.110.10")
matches = re.finditer(regex, your_string, re.MULTILINE)
for match in matches:
result = match.group(1)
print(result)
The comma seems to be the delimiter in the string.
To not cross-matching a comma (to prevent matching too much), and also not cross-matching a second # char you can use a negated character class starting with [^
If the entry can also be at the end of the string, you can assert either a , or the end of the string.
#[^#,]*\.([A-Za-z]{2})(?=,|$)
Regex demo
import re
regex = r"#[^#,]*\.([A-Za-z]{2})(?=,|$)"
s = ("001,Francisca,Dr Jhonaci,jhonadr#abc.com,32yearsold,120.238.225.0\n"
"002,Lavenda,Bocina,lavenboci#banck.ac.uk,50yearsold,121.186.221.182\n"
"003,Laura,Eglington,elinton#python.co.jp,26yearsold,36.55.173.63\n"
"004,Timo,Baum,timobaum#tennis.co.cn,22yearsold,121.121.110.10")
print(re.findall(regex, s, re.M))
Output
['uk', 'jp', 'cn']
Use the comma after the email instead of the last point.
Using this regex
#.+\.(\w+)(?<!com),
the capturing group will contain the info that you want.

Find all entries that contain more than one colon character [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 7 years ago.
Improve this question
I need to find all entries that contain more than one colon (:) character.
However when I do LIKE %:% it shows the entire table because of http://. How can I find more than one colon?
SELECT *
FROM `downloads`
WHERE `url` LIKE '%:%'
LIMIT 0 , 30
If you want to find a colon that occurs after the scheme of your URL, then change your LIKE clause accordingly:
SELECT *
FROM `downloads`
WHERE `url` LIKE '%:%:%'
LIMIT 0 , 30
The first colon will be in your scheme, and the second will be somewhere else in the Url after the scheme.
A word of caution, however - it is completely valid to have a colon in the Url when a port number is specified, e.g.: http://localhost:8080

Append $ character to a MySQL DB field so that length is increased by 40 % [closed]

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 8 years ago.
Improve this question
I want to append any character, say $, to the name of the student field in database such that its length is increased by 40 %, and save the result in the database.
E.g.:
Name: VijayKumar
After update:
Name: VijayKumar$$$$
You would use concat() and repeat():
select concat(name, repeat('$', ceil(length(name) * 0.4))

how to select the result using REGEXP in mysql,not contain a string [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 9 years ago.
Improve this question
MySQL does not support the Negative Lookahead. How can I find the result not containing a string using REGEXP.
I am using 'NOT REGEXP' but the result is unexpected.
there is a 'Content' column in my table,i want to find the rows which the Content column contains '' label,but i still want some src to be excluded.
here is the sql:
Content REGEXP '.' AND Content NOT REGEXP '.(test.mywebsite1.com/|img.mywebsite.com/face/|test.mywebsite.com/phoneIcon.jpg).*'
but when the Content contain both and it works unexpected;
Test your REGEXP on a known set, get that working, and verify it is working.
Then add the NOT to get the boolean inverse.
Note that a MySQL boolean expression will return one of three possible values: TRUE, FALSE and NULL.
And note that NOT expr will also return one of three possible values: TRUE, FALSE and NULL.
When expr returns NULL, then NOT expr will also return NULL.
It's not really productive to attempt to provide any other assistance, absent an actual question and more details of what you are attempting to do.