Cut text from a file and remove


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Cut text from a file and remove
# 1  
Old 09-29-2013
Error Cut text from a file and remove

Hello Friends,

I am stuck with the below problem.Any help will be appreciated.
I have a file which has say 100 lines.
On the second last line I have a line from which i want to remove certain characters..
e.g
Code:
CAST(CAST( A as varchar(50)) || ',' ||
CAST(CAST( B as varchar(50)) || ',' ||
CAST(CAST( C as varchar(50)) || ',' ||
CAST(CAST( C as varchar(50)) || ',' ||
FROM qwer

Now from the second last line i want to remove
Code:
|| ',' ||

.How can that be done.
I can cut using ) i.e
Code:
cut -d ')' -f3

which will give me || ',' || .Now I want to remove this from the file.
But this I want only for the second last line.I have managed to pick out the number of line where i want this to happen.But how can I remove the above from there.
How can I do this.

Please help.

Last edited by Scrutinizer; 09-29-2013 at 09:17 AM.. Reason: extra code tags
# 2  
Old 09-29-2013
Your specification is rather vague. You say you want to remove || ',' || (not including the space before it, but you say cut -d ')' -f3 will give you the text to be removed (which does include the space before it). What do you want to use as the pattern to match: parentheses or vertical bars.

You don't say if you want to modify the file in place or just copy the modified text to standard output.

If you want to remove zero or more spaces followed by two vertical bars followed by any string of characters followed by two vertical bars from the next to the last line and replace the original contents of your file with the change applied, you could try:
Code:
ed -s file <<-EOF
        \$-1s/ *||.*||//
        w
        q
EOF

If you want to copy the updated file to standard output and leave the original file unchanged, try:
Code:
ed -s file <<-EOF
        \$-1s/ *||.*||//
        1,\$p
        q
EOF

If neither of these meet your needs, please give a more precise definition of what you do want.
# 3  
Old 09-29-2013
Hi,
Ok...to be precise my requirement is to simply remove the
Code:
|| ',' ||

from the second last line in a shell script.I want to do that in place.Just want to discard that part completely.
Hope I am understood.
# 4  
Old 09-29-2013
Quote:
Originally Posted by vital_parsley
Hi,
Ok...to be precise my requirement is to simply remove the
Code:
|| ',' ||

from the second last line in a shell script.I want to do that in place.Just want to discard that part completely.
Hope I am understood.
OK. So, use this trivial modification to my first suggestion:
Code:
ed -s file <<-EOF
        \$-1s/||.*||//
        w
        q
EOF

# 5  
Old 09-29-2013
Try
Code:
sed -n 'x; $s/ |.*//; 1!p; ${x;p}' file
CAST(CAST( A as varchar(50)) || ',' ||
CAST(CAST( B as varchar(50)) || ',' ||
CAST(CAST( C as varchar(50)) || ',' ||
CAST(CAST( C as varchar(50))
FROM qwer

This User Gave Thanks to RudiC For This Post:
# 6  
Old 09-29-2013
Quote:
Originally Posted by RudiC
Try
Code:
sed -n 'x; $s/ |.*//; 1!p; ${x;p}' file
CAST(CAST( A as varchar(50)) || ',' ||
CAST(CAST( B as varchar(50)) || ',' ||
CAST(CAST( C as varchar(50)) || ',' ||
CAST(CAST( C as varchar(50))
FROM qwer

Hi RudiC,

Could you please explain the flags you have used ? So i can be sure.
# 7  
Old 09-29-2013
-n - don't automatically print lines

x; - swap the current pattern space (in this case, the whole line just read) with the 'hold' buffer. When the first line is processed this swaps the 'A' line into 'hold' and has nothing in the pattern space, for the second line it swaps the 'B' line into 'hold and the 'A' line back into the pattern space, and so on.

$s/ |.*// - on processing the last line, replace (in the pattern space) ' |' followed by any number of any character with nothing. (Note that the replace is actually happening on the last-but-one line, since it was just swapped out of hold.)

1!p; - on processing any line except the first, print the pattern space (which is now the previous line).

${x;p} - on processing the last line, swap the hold & pattern space again (which gets the actual last line back) and print the pattern space.

Hopefully that makes sense. It's late Smilie.
This User Gave Thanks to CarloM For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to remove the text between all curly brackets from text file?

Hello experts, I have a text file with lot of curly brackets (both opening { & closing } ). I need to delete them alongwith the text between opening & closing brackets' pair. For ex: Input:- 59. Rh1 Qe4 {(Qf5-e4 Qd8-g8+ Kg6-f5 Qg8-h7+ Kf5-e5 Qh7-e7+ Ke5-f5 Qe7-d7+ Qe4-e6 Qd7-h7+ Qe6-g6... (6 Replies)
Discussion started by: prvnrk
6 Replies

2. Shell Programming and Scripting

Cut text file in place

I have a file that i want to take only the first part of it and discard the rest, to be accurate,I need the first 137097 lines but I cant use split because I dont have enough space on my disck. I need sth to cut the file in its place (3 Replies)
Discussion started by: Heidi Heweidy
3 Replies

3. UNIX for Dummies Questions & Answers

How to cut from a text file based on value of a specific column?

Hi, I have a tab delimited text file from which I want to cut out specific columns. If the second column equals one, I want to cut out columns 1 and 5 and 6. If the second column equals two, I want to cut out columns 1 and 5 and 7. How do I go about doing that? Thanks! (4 Replies)
Discussion started by: evelibertine
4 Replies

4. UNIX for Advanced & Expert Users

Help using Awk and cut with a text file

Looking for some help on using awk and cut I have a text file that has fixed information and want to write a script that will prompt the user for an account to search for and pint the output The sample line that has the key information looks like this: Statement to: ... (5 Replies)
Discussion started by: ziggy6
5 Replies

5. UNIX for Dummies Questions & Answers

Cut text from a file

How can I cut the text of definite length say from line no. 20 to 1000? It is trivial ques, but I am very new to Unix. Thanks :) (3 Replies)
Discussion started by: JackR
3 Replies

6. Shell Programming and Scripting

cut the second line in a text file

Hi I have some problem to cut out the second line in a output file and send to a new file it's a #!/bin/bash script 1 something 2 something 3 something and after I cut 1 something 3 something New file 2 something Thanks in advance (7 Replies)
Discussion started by: pelle
7 Replies

7. Shell Programming and Scripting

Help need to cut the first word of a line in text file

Hi All, I would like help with a script which can get rid of the first work of all lines in text file. File 1 The name is Scott. Output : name is Scott ---------- Post updated at 02:38 PM ---------- Previous update was at 02:37 PM ---------- Hi ALL There is typo error in... (3 Replies)
Discussion started by: bubbly
3 Replies

8. Shell Programming and Scripting

Cut big text file into 2

I have a big text file. I want to cut it into 2 pieces at known point or I know the pattern of the contents from where it can separate the files. Is there any quick command/solution? (4 Replies)
Discussion started by: sandy221
4 Replies

9. Shell Programming and Scripting

how to cut a field of a line in a text file?

Hi, I have text file which contains lines like : a/a/a/a/.project b/b/b/b/b/.project c/c/c/.project d/.project e/e/e/e/.project i want for all lines the last word .project should be removed and the file should look like : a/a/a/a/ b/b/b/b/b/ c/c/c/ .... how to proceed... (7 Replies)
Discussion started by: bhaskar_m
7 Replies

10. Shell Programming and Scripting

How to cut a text file at a certain spot?

Say I do a date command and get the time from 15 minutes ago. I have a text file with the date printed out every minute or so and I want to cut the file at the date stamp given to me by the 15 minute ago time stamp. Is there an easy way to do this? Example: date +%M gives me 56 I... (2 Replies)
Discussion started by: LordJezo
2 Replies
Login or Register to Ask a Question