Need to filter string between specific string in ksh


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need to filter string between specific string in ksh
# 1  
Old 10-16-2019
Need to filter string between specific string in ksh

My argument has data as below.

Code:
10.9.9.85
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr5.scr 127869538
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr56scr 127869538
.......  (note all these between lines will start with hyphen '-' )
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr9.scr 127869538
10.9.9.140
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr5.scr 127869538
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr6.scr 127869538
.......     (note all these between lines will start with hyphen '-' )
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr9.scr 127869538
myhost1
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr5.scr 127869538
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr6.scr 127869538
.......    (note all these between lines will start with hyphen '-' )
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr9.scr 127869538
..... (and so on)

This is how i run the script:

Code:
./readfile.sh '10.9.9.85\\n-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr5.scr 127869538\\n-rwxr-xr-x user1 2019-10-15 17:40 /app/mrt/testingscr6.mrt 4119663872\\n-rwxr-xr-x user1 2019-10-15 17:40 /app/exe/testingscr9.exe 1799452894\\n10.9.9.140\\n-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr5.scr 127869538\\n-rwxr-xr-x user1 2019-10-15 17:40 /app/mrt/testingscr6.mrt 4119663872\\n-rwxr-xr-x user1 2019-10-15 17:40 /app/exe/testingscr9.exe 1799452894'

I wish to get the the filenames between the first IP/hostname and the next IP/hostname only i.e between the first and second IP / Host specified.

Desired Output:
Code:
/app/scripts/testingscr5.scr
/app/scripts/testingscr6.scr
.......
 /app/scripts/testingscr9.scr

below is what i did so far:

Code:
#!/bin/ksh
VAR1=`echo "${1}" | sed -e "s/'//g"`
echo "${VAR1}" |
  while IFS=' '
read -r dirpath
do
  fileis=`echo "$dirpath" | awk -F' '  '{ print $5 }'`
  echo "FILE IS:$fileis"
 done

The above prints all file names but I m not able to get the logic of how can I filter filenames between the first IP/Hostname and the SecondOne only ... store it in a variable.

Note: There maybe a case where we do not have a second IP / Hostname in which case we need to get the filename after the first IP / Hostname only.

Tip: we can look for strings starting with hyphen '-' to know if that is a file entry.

I'm using ksh shell on AiX 6.1

Moderator's Comments:
Mod Comment Please stop using QUOTE tags for sample input and output. Use only CODE tags.

Last edited by mohtashims; 10-16-2019 at 02:30 AM..
# 2  
Old 10-16-2019
Resolved the issue by this logic

Code:
VAR1=`echo "${1}" | sed -e "s/'//g"`
echo "${VAR1}" |
  while IFS=' '
read -r dirpath
do
        if [ $tmp -le 1 ]; then
  fileis=`echo "$dirpath" | awk -F' '  '{ print $5 }'`
  echo "FILE IS:$fileis"
         if [[ "$fileis" == "/"*  ]]; then
        echo "This is the File:$fileis"
        filelist[$count]="$fileis"
         count=`expr $count + 1`
        echo "INCREMENT VALUE:$count"
        else
         tmp=`expr $tmp + 1`
         echo "INCREMENT BY:$tmp"
         fi
           else
         break;
          fi   
done

# 3  
Old 10-16-2019
Trivial example using PHP:

Code:
cat example.php

Code:
<?php

$stuff = '-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr5.scr 127869538
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr56.scr 127869538
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr9.scr 127869538
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr5.scr 127869538
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr6.scr 127869538
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr9.scr 127869538
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr5.scr 127869538
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr6.scr 127869538
-rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr9.scr 127869538';

foreach(preg_split("/((\r?\n)|(\r\n?))/", $stuff) as $line)
{
$pieces = explode(' ',$line);
echo $pieces[4] . "\n"  ;
}

Code:
osx$ php example.php
/app/scripts/testingscr56.scr
/app/scripts/testingscr9.scr
/app/scripts/testingscr5.scr
/app/scripts/testingscr6.scr
/app/scripts/testingscr9.scr
/app/scripts/testingscr5.scr
/app/scripts/testingscr6.scr
/app/scripts/testingscr9.scr

Modify as you please.
# 4  
Old 10-16-2019
How about
Code:
echo "${1//\\\\n/$'\n'}" | awk '$5 {print "File is:", $5}'
File is: /app/scripts/testingscr5.scr
File is: /app/mrt/testingscr6.mrt
File is: /app/exe/testingscr9.exe
File is: /app/scripts/testingscr5.scr
File is: /app/mrt/testingscr6.mrt
File is: /app/exe/testingscr9.exe

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Search specific string logfile specific date range

Hi, I have logfile like this.. === 2014-02-09 15:46:59,936 INFO RequestContext - URL: '/eyisp/sc/skins/EY/images/pickers/comboBoxPicker_Over.png', User-Agent: 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko': Unsupported with Accept-Encoding header === 2015-02-09... (8 Replies)
Discussion started by: kishk
8 Replies

2. Shell Programming and Scripting

How to extract every repeated string between two specific string?

Hello guys, I have problem with hpux shell script. I have one big text file that contains like SOH bla bla bla bla bla bla ETX SOH bla bla bla ETX SOH bla bla bla ETX What I need to do is save first SOH*BLA into file1.txt, save second SOH*BLA into file2.txt and so on.... (17 Replies)
Discussion started by: sembii
17 Replies

3. Shell Programming and Scripting

Shell Script (ksh) - SQLPlus query filter using a string variable

Using ksh, I am using SQLPlus to execute a query with a filter using a string variable. REPO_DB=DEV1 FOLDER_NM='U_nmalencia' FOLDER_CHECK=$(sqlplus -s /nolog <<EOF CONNECT user/pswd_select@${REPO_DB} set echo off heading off feedback off select subj_name from subject where... (5 Replies)
Discussion started by: nkm0brm
5 Replies

4. UNIX for Dummies Questions & Answers

Search for a specific String in a log file for a specific date range

Hi, I have log file which rolls out every second which is as this. HttpGenRequest - -<!--OXi dbPublish--> <created="2014-03-24 23:45:37" lastMsgId="" requestTime="0.0333"> <response request="getOutcomeDetails" code="114" message="Request found no matching data" debug="" provider="undefined"/>... (3 Replies)
Discussion started by: karthikprakash
3 Replies

5. Shell Programming and Scripting

Perl script to filter the string

Hi folks, I have a log file with the lines in the below format. Jul 1 23:00:51 10.212.3.251 SS: %SYS-7-CLI_SCHEDULE: some error occured I want to split the line based on the " %SYS-7-CLI_SCHEDULE: " value. The criteria is the should store the word that starts with % i.e., ... (1 Reply)
Discussion started by: scriptscript
1 Replies

6. UNIX for Dummies Questions & Answers

Filter a particular string

Hi, I have a long log file. Out of which I want to filter particular occurrences where APC=4-033-0. Please help how it can be done. Input : +++ ELEMENT 12-05-27 23:15:06 CC 3482 #040185 > REPT APB TPE=C7NTL SM=22 OPC=4-003-7 APC=4-033-4 inaccessible END OF REPORT #040185 ++- ... (7 Replies)
Discussion started by: vanand420
7 Replies

7. Shell Programming and Scripting

Sed filter words from string

I have following string in a variable: str="sstring garbage adfsdf tab.col1 lkad rjfj tab2.col2 adja tab2.col4 garbage" I want to filter "word.word" pattern from it. I assume the pattern won't occur in start or end of the string. Output shoud be: tab.col1 tab2.col2 tab2.col4 Can this be... (7 Replies)
Discussion started by: amicon007
7 Replies

8. Shell Programming and Scripting

Find and replace a string a specific value in specific location in AIX

Hi, I have following samp.txt file in unix. samp.txt 01Roy2D3M000000 02Rad2D3M222222 . . . . 10Mik0A2M343443 Desired Output 01Roy2A3M000000 02Rad2A3M222222 . . (5 Replies)
Discussion started by: techmoris
5 Replies

9. Shell Programming and Scripting

using sed to replace a specific string on a specific line number using variables

using sed to replace a specific string on a specific line number using variables this is where i am at grep -v WARNING output | grep -v spawn | grep -v Passphrase | grep -v Authentication | grep -v '/sbin/tfadmin netguard -C'| grep -v 'NETWORK>' >> output.clean grep -n Destination... (2 Replies)
Discussion started by: todd.cutting
2 Replies

10. Shell Programming and Scripting

filter the string from a file ??

I have a file in which there are strings given below: inode 1138932c(mqsiadm) inode 1257904c(mqsiadm) I want to get the nos. only form these. The o/p should be 1138932 1257904 How to filter this out ?? (11 Replies)
Discussion started by: varungupta
11 Replies
Login or Register to Ask a Question