Need to filter string between specific string in ksh


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need to filter string between specific string in ksh
# 1  
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 03:30 AM..
# 2  
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  
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  
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 for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #531
Difficulty: Easy
Unicode is not backward compatible, so it does not work with plain ASCII characters.
True or False?

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

Featured Tech Videos