Copy and paste data


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Copy and paste data
# 1  
Old 07-30-2012
Copy and paste data

I need to copy from specified lines and paste the data into several other lines.

Code:
XX123450008 xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x
XX123451895 xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x
......
XX123452012 xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx. xx.x xx.x xx.x xx.x xx.x
......
XX123460008 xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x
XX123461895 xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx.x
.....
XX123462012 xx.x xx.x xx.x xx.x xx.x xx.x xx.x xx. xx.x xx.x xx.x xx.x xx.x
......

In the example above I need to copy the data (xx.x) from every instance of ....0008 and paste it into every line from ...1895 to ....2012.

What is the best way to do this? I have some familiarity with awk and sed.
# 2  
Old 07-30-2012
try:
Code:
awk '{n=0+substr($1,8)} n==8 { for(i=2;i<=NF;i++) copy[i]=$i } n>=1895 && n<=2012 { for(i=2;i<=NF;i++) $i=copy[i]} 1' input

# 3  
Old 07-30-2012
Quote:
Originally Posted by neutronscott
try:
Code:
awk '{n=0+substr($1,8)} n==8 { for(i=2;i<=NF;i++) copy[i]=$i } n>=1895 && n<=2012 { for(i=2;i<=NF;i++) $i=copy[i]} 1' input


That seemed to work for the first 2 instances, but the other 400+ did not change. I modified the code to (see below) but it still did not do anything after the 2nd instance. Any suggestions?

Code:
awk '{n=0+substr($1,020008)} n==020008 { for(i=400;i<=NF;i++) copy[i]=$i } n>=1895 && n<=2012 { for(i=400;i<=NF;i++) $i=copy[i]} 1' input

# 4  
Old 07-30-2012
Do you have over 400 columns and want to change only those >400?

Is the length of column 1 different in the real data? Probably all you want to change is how n is calculated. Mine took from character 8 onward.
# 5  
Old 07-30-2012
Quote:
Originally Posted by neutronscott
Do you have over 400 columns and want to change only those >400?

Is the length of column 1 different in the real data? Probably all you want to change is how n is calculated. Mine took from character 8 onward.

Oh I see. The number of columns remain the same throughout. There are over 400 instances of 020008. On the third instance of 020008 the data are not copied.

Code:
XX00101020008  39.5 43.8 51.7 59.5 67.7 75.2 78.9 77.8 71.7 60.5 50.7 42.6   60
XX00101021895  39.5 43.8 51.7 59.5 67.7 75.2 78.9 77.8 71.7 60.5 50.7 42.6   60
.....
AL00101022012  39.5 43.8 51.7 59.5 67.7 75.2 78.9 77.8 71.7 60.5 50.7 42.6   60
....
....
AL00103020008  41.9   46 53.7 60.6 68.6 75.9 79.5 78.6 72.9 61.5 52.2 44.7 61.3
AL00103021895  41.2 36.1 53.2 62.2 68.9 77.8 79.8 79.7 77.5 59.2 52.3 43.8   61

# 6  
Old 07-30-2012
This would grab just the last 4 character of $1: {n=0+substr($1,length($1)+1-4)}, but you now shown 020008, so that would be 6: {n=0+substr($1,length($1)-5)}.
So if you want 020008 now, as well as 021895 and 022012:
Code:
awk '{n=0+substr($1,length($1)-5)} n==20008 { for(i=2;i<=NF;i++) copy[i]=$i } n>=21895 && n<=22012 { for(i=2;i<=NF;i++) $i=copy[i]} 1' input

This User Gave Thanks to neutronscott For This Post:
# 7  
Old 08-01-2012
A couple of issues came up with the output. The original code has 3 spaces separating each column. The output or pasted data only has a single space. What is the proper way to preserve formatting?

Code:
XX00101020008   39.5   43.8   51.7   59.5   67.7   75.2   78.9   77.8   71.7   60.5   50.7   42.6   60.0
XX00101021895 39.5 43.8 51.7 59.5 67.7 75.2 78.9 77.8 71.7 60.5 50.7 42.6 60.0

Also - what if I only need the data to be pasted into 2 rows. Like the rows ending with ....2011 and ...2012? I tried (see below) but it did not work.

Code:
awk '{n=0+substr($1,8)} n==8 { for(i=2;i<=NF;i++) copy[i]=$i } n>=2011 && n<=2012 { for(i=2;i<=NF;i++) $i=copy[i]} 1'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Copy/paste in vi editor

Hello guys, I am trying to copy a line in vi editor and paste it with below commands but paste command is not working and instead of paste action prints the p character!! I should also mention that the server is Solaris... 1) crontab -e 2) j to move down 3) yy to copy the line 4) o to... (4 Replies)
Discussion started by: Newman
4 Replies

2. Shell Programming and Scripting

Copy n paste n times

I have one mainframe copy book where I want to copy n times depend on occurs which mention below. Example: Below highlighted row mention “occurs 2 times” so I need to copy 2 times till next label 10. C14992 10 FILLER PIC X(2835). 01 ... (7 Replies)
Discussion started by: srivalli
7 Replies

3. Shell Programming and Scripting

Copy and Paste to a new document

Hello, I am quite new to shell scripting so don't know all the tools available. What I'm trying to do is open a file optimal.txt search for objectiveValue and copy the number in quotes next to it. e.g. ... solutionName="incumbent" solutionIndex="-1" objectiveValue="13246" ... (6 Replies)
Discussion started by: StephanR
6 Replies

4. UNIX for Dummies Questions & Answers

Copy/Paste in Vi editor

Dear All, I have a file containing 12 lines. First 3 lines have 9 values and the remaining 9 lines with no values. I was trying to copy and paste these 9 values of the first 3 lines into last 9 lines simultaneously as A=1.491331, B=1.539000 ..... but I don't know how to cope with this... (9 Replies)
Discussion started by: sullah
9 Replies

5. UNIX for Dummies Questions & Answers

vi copy/paste problem

I'm having a problem copy/pasting from a txt file in windows to vi. What happens is I copy a chunk of text, go to the putty terminal, go into insert mode, and right click, and it will stop pasting at a random point and freeze up. Nothing I do gets out of it. This only happens on my account... (1 Reply)
Discussion started by: solidarity
1 Replies

6. Shell Programming and Scripting

sed copy paste

Hello, I have this path and file: /dir/dir/dir/dir/dir/dir/dir/dir/dir/THIS_SPOT/fle.txt I want to end up with: /dir/dir/dir/dir/dir/dir/dir/dir/dir/THIS_SPOT/fle.txtTHIS_SPOT Take the dir after the 10th slash, add a tab at the end and paste the dir it copied. Thanks (4 Replies)
Discussion started by: crowman
4 Replies

7. UNIX for Dummies Questions & Answers

Copy/Paste data in files

Hi, I want to put the following values into Variables R2=0.999863 , V2=118.870318 , D2=-178.887511 and so on. There are six values for each variable R2-R8, V2-V8 and D2-D8, total of 18 values for all the variables. Can any one help me to copy and paste all the values in their respective... (2 Replies)
Discussion started by: sullah
2 Replies

8. Shell Programming and Scripting

copy/paste with awk

Hi everybody, I have two XML files. I am working on a script that could copy and paste the contents of the first xml file to the desired location in the second xml file. Here is my first XML file. This is the second XML file. Finaly, I wnat to obtain something like that : ... (2 Replies)
Discussion started by: lsaas
2 Replies

9. Shell Programming and Scripting

Search, copy and paste

Can i search in a file for more than one string at a time? And copy the next string after that and paste it in column style? Is it possible? Thanks! (4 Replies)
Discussion started by: kingpeejay
4 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

Featured Tech Videos