Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 8 years ago.
Improve this question
I have file as below.
ID || DATE || AMOUNT
XX||20130801##20130901##20131001##20131101||100##200##300##400
and I want the output as below using perl.
xx||20130801||100
xx||20130901||200
xx||20131001||300
xx||20131101||400
Please help me how to convert using perl.
perl -F'\|\||##' -lanE'$.>1 or $" ="||",next; say "#F[0,$_,$_+4]" for 1..4' file
perl -F'\|\|' -lane '#a=split(/##/,$F[1]); #b=split(/##/,$F[2]); print "$F[0]||$a[$_]||$b[$_]" foreach 0..$#a;' file
Output:
ID || DATE || AMOUNT
XX||20130801||100
XX||20130901||200
XX||20131001||300
XX||20131101||400
Related
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 am extracting oracle version from windows using powershell command and i get result as 10.2.0.3.0Patch2, however i need to extract only numeric value i.e. 10.2.0.3.0 (only version number). Any way we can do it ?
Version info extracted is =
10.2.0.3.0 Production, 10.2.0.3.0Patch2 Production, 10.2.0.5.0 Production, 11.2.0.4.0 Production
You can use a regular expression to extract a substring. Example:
"10.2.0.3.0Patch2" | Select-String '((?:\d{1,3}\.){4}\d{1,3})' | ForEach-Object {
$_.Matches[0].Groups[1].Value
}
# Outputs the string '10.2.0.3.0'
You can read more about regular expressions by reading the about_Regular_Expressions help topic:
PS C:\> help about_Regular_Expressions
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
Hi i try to transcript an awk command to powershell
i have a text file
SQLBefore:=
UPDATE SYSADM.PS_S1_R_FLWUP
SET S1_FLWUP_DATE_CHK=SYSTIMESTAMP
, S1_FLWUP_DATE_LAST=NULL
WHERE S1_FLWUP_NAME='GGGGG_ETAT_JJ'
SQLAfter:=
UPDATE SYSADM.PS_S1_R_FLWUP
SET S1_FLWUP_DATE_LAST=SYSTIMESTAMP
, S1_FLWUP_STAT_SID=1
WHERE S1_FLWUP_NAME='TTTTT_ETAT_'
SQLFailed:=
UPDATE SYSADM.PS_S1_R_FLWUP
SET S1_FLWUP_DATE_LAST=S1_FLWUP_DATE_FRST
, S1_FLWUP_STAT_SID=3
WHERE S1_FLWUP_NAME='JJJJ_ETAT_JJJ'
And i would like to do the same than this unix command in powershell
cat $this_file|awk '/SQLAfter/,/SQLFailed/ {print $0}'| grep -v SQL|sed -e 's/^$//'
It's return
UPDATE SYSADM.PS_S1_R_FLWUP
SET S1_FLWUP_DATE_CHK=SYSTIMESTAMP
, S1_FLWUP_DATE_LAST=NULL
WHERE S1_FLWUP_NAME='GGGGG_ETAT_JJ'
I'm getting stuck to do the delimiter like awk, between "SQLBefore:=" and "SQLAfter:=" with powershell
Thanks for your help.
I'm a beginner of powershell sorry for my english
One possibility, assuming I'm reading the question correctly (however "bad" you think your English might be I assure you it's considerably better than my AWK).
((get-content testfile.txt -raw) -split 'SQL(?:Before|After):=')[1]
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 7 years ago.
Improve this question
How can I detect and show an error if someone put a letter and the program expects a number?
A regexp match makes this easy. Searching for any character which isn't a numeral or an arithmetic symbol:
if ( $input =~ /[^0-9+*/-]/ ) {
print "Incorrect character detected!\n"
}
Literally anything which is a letter:
if ( $input =~ /[A-Za-z]/ ) {
print "Incorrect character detected!\n"
}
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 have an array in the third element dataArr[2], I know it contains a 10 digit phone. I need to only read or print the first 6 digits. For instance if my phone is 8329001111, I need to print out the 832900. I tried to see if I can use substr but I keep reading or printing the full list. Do I need to dereference..
Try this :
$dataArr[2] =~ s/\s//g; # ensure there's no spaces
print substr($dataArr[2], 0, 6);
# ^ ^ ^
# variable | |
# offset start|
# |
# substring length
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
Can someone explain what the second half of this script does? (second line)
$self is defined elsewhere... (I know what that part does, Just wondering what the action=~... is all about/)
$action = "http://example.com/test.php";
$action = $self->{url} . ($action =~ /^\// ? "" : "/" ) . $action;
It returns an empty string if $action starts with a slash, and a slash if it does not start with a slash.