UNIX question on grep


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting UNIX question on grep
# 1  
Old 03-24-2015
UNIX question on grep

Dear Sir,

I need to remove the word /klp/ in all the files present in the directories

can you tell me how to remove the word globally.

Code:
grep "/klp/" * -exec ls -l

Once the above command is exectubed I could see lot of files displayed.

Last edited by zaxxon; 03-24-2015 at 08:29 AM.. Reason: code tags not around code, not description
# 2  
Old 03-24-2015
This has a few issues already.
  • I do not believe that grep has a -exec option. This looks like the end of a find command.
  • Using the * to specify all files might hit problems if:-
    • There are too many files and your expanded command exceeds the limit
    • There are special files, such as directories etc.
  • If the string you are looking for is /klp/ then you may need to consider that the / is a special character. You might need to search for \/klp\/ to get what you want.

I would use find to generate the list to work with and then for each file you find, you could use grep, sed or perhaps awk to make the edit depending how you want the edit to affect the file.

I would suggest initially that you should use this to select the files to work on:-
Code:
find $dir -type f -exec grep -l "/klp/" {} /dev/null \;

I would avoid running the ls -l as you will only have to extract the file again information later on.

The use of /dev/null causes grep to output the filename and when combined with the -l flag does not show you the actual matching lines.

From this list, you can then decide what to do next. Do you want to:-
  • Delete the whole record where the string is matched
  • Delete just the actual string matched
  • Overwrite the actual string matched (in case you have fixed width data)
  • Something else?
Can you elaborate?


Thanks, in advance,
Robin
# 3  
Old 03-24-2015
thanks for your detailed explanation.

I would need to delete that particular word in all the files present in the one particual directories.

The particular word
Code:
 /klp/

is present in the directory
Code:
 /us/hub/

my request is to delete the particular matched string alone.
# 4  
Old 03-24-2015
So if your input file contains the records:-
Code:
abc/def/hij/klp/001
zyx/wvu/tsr/klm/002

.... does that mean you output should be:-
  1. Code:
    abc/def/hij//001
    zyx/wvu/tsr/klm/002

  2. Code:
    abc/def/hij001
    zyx/wvu/tsr/klm/002

  3. Code:
    abc/def/hij     001
    zyx/wvu/tsr/klm/002

  4. Something else?

I just want to be sure that I am/we are working on the right idea.



Robin
# 5  
Old 03-24-2015
Code:
 string ="/klp//"

everything is perfect. from your example only the
Code:
 / /

slash also need to be removed.

only the particular string need to be deleted in all the files.
# 6  
Old 03-24-2015
Can do this using for loop in directory
Code:
for file in `ls *files.txt`
do
newfile=$file"_new"
cat $file | sed 's/klp//g' >$newfile
done


Last edited by rbatte1; 03-24-2015 at 10:31 AM.. Reason: Changed ICODE tage to just CODE tags
# 7  
Old 03-24-2015
To ramkumar15,

Which option is it then? Leaving blanks or not?


To kidSandy,

There is again the issue over the number of files that your command will be expanded to.



Robin

Last edited by rbatte1; 03-24-2015 at 10:34 AM.. Reason: Emboldened member names.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

New Unix user with shell script question using grep

Hello, I am a new Unix user and new to shell programming. I am working on a script to go through a log file and find the text error: grep -i 'error' monplus.mplog if I find the text error in the log file I would like to echo a message to the operator staing there is an error I am currently... (2 Replies)
Discussion started by: dtracy01
2 Replies

2. UNIX for Dummies Questions & Answers

grep question

Hi everyone, i am german, so excuse my bad english. i got a problem with the grep-command. i got a file with a lot of entries and i want to grep some of them out into another file. here is a part of the file: 1038194 ξΟΥ΢ΙΝ & δΕ΢ΞΗΑΜΠ΢, βξη 10, 1886, 486, ΝΟ. 1038195 1; 1038196 ... (2 Replies)
Discussion started by: JustAnotherUser
2 Replies

3. UNIX for Dummies Questions & Answers

| help | unix | grep (GNU grep) 2.5.1 | advanced regex syntax

Hello, I'm working on unix with grep (GNU grep) 2.5.1. I'm going through some of the newer regex syntax using Regular Expression Reference - Advanced Syntax a guide. ls -aLl /bin | grep "\(x\)" Which works, just highlights 'x' where ever, when ever. I'm trying to to get (?:) to work but... (4 Replies)
Discussion started by: MykC
4 Replies

4. UNIX for Dummies Questions & Answers

| help | unix | grep - Can I use grep to return a string with exactly n matches?

Hello, I looking to use grep to return a string with exactly n matches. I'm building off this: ls -aLl /bin | grep '^.\{9\}x' | tr -s ' ' -rwxr-xr-x 1 root root 632816 Nov 25 2008 vi -rwxr-xr-x 1 root root 632816 Nov 25 2008 view -rwxr-xr-x 1 root root 16008 May 25 2008... (7 Replies)
Discussion started by: MykC
7 Replies

5. Shell Programming and Scripting

Question in grep

I have a requirement where I need to search for 26 consecutive 000000.000 in a file. I tried using grep but it is not working. The string I need to search is ... (2 Replies)
Discussion started by: gpaulose
2 Replies

6. UNIX for Dummies Questions & Answers

grep question

Hi, I want to grep a word "success" from /home/user/ab123 and put it in a txt file. There are lot of directories under ab123 and subdirectories. So is it like this? /home/user/123: grep -i -R "success" > grepsuccess. Please give me a command... Thanks. (4 Replies)
Discussion started by: everurs789
4 Replies

7. Shell Programming and Scripting

Question of grep

As i understand the filter process of grep i was wondering, is it possible to to have a hidden word in a file(eg ------) and then use the grep filter to find a specific letter in that word which you can then replace with the letter in that word (eg ---a--) if it is please show me an example if it... (6 Replies)
Discussion started by: ZAXTHEGREAT
6 Replies

8. UNIX for Dummies Questions & Answers

grep question

I wanted to search a for all lines containing ERROR but not errors that contained the word "foo" (for example). The only way I could figure out to do it was: grep ERROR myfile.log | grep -v foo is there a way to do this with one grep command instead of two? One grep is faster than two,... (4 Replies)
Discussion started by: tim-bobby
4 Replies

9. UNIX for Dummies Questions & Answers

grep -f question

when using grep -f file1 file2 if you have multiple entries in the pattern file1 that are the same will it take the line out of file2 that matches file1 each time it comes up? if not by default can you set a flag to make this possible? or another way - can you get it to search for and match the... (8 Replies)
Discussion started by: Adriel
8 Replies

10. Shell Programming and Scripting

grep question

hi all, I need to grep for a string in a file which is in another string For Ex: This is the sample file sample.txt number 1234 name raje passwd 1234 date 123 service 75 service 23 I have made a unix command like this, i am not sure this is correct or wrong. If any better... (3 Replies)
Discussion started by: raje17
3 Replies
Login or Register to Ask a Question