cut and paste


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting cut and paste
# 1  
Old 10-05-2009
cut and paste

Hi,
Need a help with shell script. I have to search for a string in one of the file, if match found, copy the line to a new file and delete the line from the exisiting file.
eg:
Code:
83510000000000063800000.1800000.1600000.1600000.2400000.1800000.2000000.21
83510000000000064500000.1100000.2800000.1000000.1200000.1900000.1200000.12
83510000000000064500000.1100000.2800000.1000000.1200000.1900000.1200000.13
83510000000000064900001.7800001.0400001.2300001.2600001.0900001.9000001.48
83510000000000065100000.2500000.1400000.2300000.3300000.2300000.2300000.20

if 835100000000000638 is found, i need to replace it with 835100000000000639 and write to a new file. Also I need the 835100000000000638 to be deleted from my exising file.

I tried
Code:
sed -n "s/835100000000000638/835100000000000639/p oldfile > newfile

this will find and write to new file but wont delete from existing file.

Please help.
# 2  
Old 10-05-2009
If your sed support -i option:

Code:
sed  -i.bak "s/835100000000000638/835100000000000639/g" urfile

If your sed don't support -i option, perl will help you:

Code:
perl -i.bak -pe 's/835100000000000638/835100000000000639/g' urfile


Last edited by rdcwayx; 10-06-2009 at 12:28 AM..
# 3  
Old 10-05-2009
Copy this to a text file (strip.awk)

Code:
# strip lines out of file and make new file of lines removed and modified

# set up patterns - any regex will work

BEGIN {
        MY_PAT="835100000000000638"
        NEW_PAT="835100000000000639"
}

# This clause is executed on the opening of each file on the command line
# It first checks to see if this is not the first file and cleans up the
#  previous files and copies the new stripped file to the old file
#  NOTE:  I would prefer if it didn't overwrite the input file...
# It then creates the names and commands it will need later
(FNR == 1) {                    # check if first line of new file
        if ( NR != 1)           # see if this is not first file
        {
                close(FILEOUT)  # if true, then we close previous files
                close(FILELOG)
                system(FILECP)  # do the copy
                system(FILERM)  # remove the work file
        }

        FILEOUT = FILENAME ".strip"     # create striped file name using input file name
        FILELOG = FILENAME ".new"               # create new file

        FILECP = "cp " FILEOUT " " FILENAME     # copy command
        FILERM = "rm " FILEOUT          # remove strip file
}

# This clause executes for every line
# It copies lines from the input file to the appropriate output file
{
        if (  sub(MY_PAT,NEW_PAT) == 0 )      # test for pattern in line
                print > FILEOUT # save to stripped file if pattern not found
        else
                print > FILELOG # save to remove log if pattern match
}

# This clause is executed when the last line of the last file is reached
END {
        system(FILECP)  # clean up last file
        system(FILERM)
}

Then execute:

Code:
awk -f strip.awk <data.file>


It will create a file with .new with the removed lines....
# 4  
Old 10-06-2009
Hope I understand your question correctly.

Code:
$ cat a
83510000000000063800000.1800000.1600000.1600000.2400000.1800000.2000000.21
83510000000000064500000.1100000.2800000.1000000.1200000.1900000.1200000.12
83510000000000064500000.1100000.2800000.1000000.1200000.1900000.1200000.13
83510000000000064900001.7800001.0400001.2300001.2600001.0900001.9000001.48
83510000000000065100000.2500000.1400000.2300000.3300000.2300000.2300000.20

$ sed -i -e 's/835100000000000638/835100000000000639/gw test'  -e '/835100000000000639/d' a

$ cat test
83510000000000063900000.1800000.1600000.1600000.2400000.1800000.2000000.21

$ cat a
83510000000000064500000.1100000.2800000.1000000.1200000.1900000.1200000.12
83510000000000064500000.1100000.2800000.1000000.1200000.1900000.1200000.13
83510000000000064900001.7800001.0400001.2300001.2600001.0900001.9000001.48
83510000000000065100000.2500000.1400000.2300000.3300000.2300000.2300000.20

# 5  
Old 10-06-2009
skmdu, yes. You got it right. So are you asking me to do it in two sed commands?
# 6  
Old 10-06-2009
Code:
It is single sed command. 
$ sed -i -e 's/835100000000000638/835100000000000639/gw test'  -e '/835100000000000639/d'

# 7  
Old 10-06-2009
Got an error message not recognized flag i

Code:
sed: Not a recognized flag: i
Usage:  sed [-n] Script [File ...]
        sed [-n] [-e Script] ... [-f Script_file] ... [File ...]


What should I do?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Problem in cut or paste

Hello, I have some problem in cut or paste command for my text data. Input1.txt : I use cut command : cut -d ' ' -f1 Input1.txt > result.txt result.txt : Then, I use paste command to merge result.txt. paste -d ' ' result.txt Input1.txt > output.txt output.txt showed : I use cut... (1 Reply)
Discussion started by: awil
1 Replies

2. Shell Programming and Scripting

Issue with cut and paste

let i have A file and B file A has contains 4 fields as below ---------------- f1 f2 f3 f4 B file consists of 5 fields as below -------------------- f5 f6 f7 f8 f9 need to display as below output: f5 f1 f3 f8 f9 (2 Replies)
Discussion started by: ANSHUMAN1983
2 Replies

3. Shell Programming and Scripting

need help with cut and paste command

I have a file which contains 3 fields separated by tabs example andrew kid baker I need to swap kid and baker using cut and paste commands how is this to be done? Thanks (3 Replies)
Discussion started by: drew211
3 Replies

4. UNIX for Dummies Questions & Answers

Cut paste from one file to other

Hello, I am working on unix for the first time. I have to write a shell script where i want to cut paste from one file to other. File "1234.abc" is 03,12345555 16,936,x,x,120 16,936,x,x,100 49,12345555 03,12347710 16,936,x,x,115 16,936,x,x,122 49,12347710 03,12342222... (9 Replies)
Discussion started by: swapsb
9 Replies

5. Shell Programming and Scripting

cut and paste?

hi, I have a file with content like this for an employee: EmployeeID 101 Day_type, day vacation,1/2/2009 sick day, 3/2/2009 personal day, 4/5/2009 jury duty day, 5/5/2009 how do I make the result to show: EmployeeID,Day_type,day 101,vacation,1/2/2009 101,sick day,... (6 Replies)
Discussion started by: jbchen
6 Replies

6. UNIX for Dummies Questions & Answers

cut and paste from two tables

Hello, I want to be able to cut and paste columns from two tables in one command. Presently I do the following: cut -f 1,3-6,9 table1.in > table1.out cut -f 7,6,1-3 table2.in > table2.out paste table1.out -d '\t' table2.out > MergedTable.out Is there a better way to do this? ... (1 Reply)
Discussion started by: Gussifinknottle
1 Replies

7. Shell Programming and Scripting

cut and paste using awk

Hi i need a favour i have a file which has some trillions of records. The file is like this 11111000000000192831840914000000000000000000000000000 45789899090000000000000000011111111111111111111111111 I want to cut specific postions in each line like cut1-3 and assisgn it to a variable and... (5 Replies)
Discussion started by: richa2.m
5 Replies

8. Shell Programming and Scripting

Cut Paste and Insert Help

Hello I have a very large file where say each line is made up of 80 characters. I want to cut the characters from 20-30 and 50-60 from each line and then insert a delimiter between them (# or | etc). eg input file 000000000131.12.20990000590425246363375670011200140406... (5 Replies)
Discussion started by: PradeepRed
5 Replies

9. Shell Programming and Scripting

cut & paste

hi i am new to shell scripting, i have been trying to cut columns numbered 1,4 of a file consisiting of 4 columns. Each column is seperated by 2 spaces. for example: john 6102097199 tennessee usa michel 6734590899 texas USA now, i need to cut the name... (3 Replies)
Discussion started by: t_harsha18
3 Replies

10. UNIX Desktop Questions & Answers

Cut, Copy and Paste with X

One of the things that I have learned to take for granted in the Win32 world is the cut, copy and paste hotkeys of ^X, ^C and ^V. I use these keys all the time under Win32 to copy and paste information from one GUI into another GUI. My question is, does X have a similiar standard? ... (4 Replies)
Discussion started by: auswipe
4 Replies
Login or Register to Ask a Question