Prepending information from filenames into files


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Prepending information from filenames into files
# 1  
Prepending information from filenames into files

I would like to know how to take information from a filename and place it into the text of the same file. Let's say I have a file called height_2_width_1.txt containing data that is related to a height of 2 and a width of 1, and the text originally looks like this:

Quote:
3 4
2 5
5 2
7 5
where these two columns are two other variables (depth and brightness, or whatever). Basically, I would like to add two columns to this file, based on the height and width of the first file, such that the end result would look like this:

Quote:
2 1 3 4
2 1 2 5
2 1 5 2
2 1 7 5
So, if I did this, I would have the height 2 and width 1 information put in columns next to the other data related to these particular heights and weights. So a case with a depth of 3 and brightness of 4 would have the height of 2 and width of 1 prepended to it.

And then I have multiple files named height_X_width_Y.txt, such that I have an array for height and width (let's say 1,2,3,4 for each X and Y variable, so I have the following files: height_1_width_1.txt, height_1_width_2.txt, etc). I would like to create a perl script that does the same thing for all of the files. I'm just not sure what the best way would be to do this would be. I hope this made sense. Smilie

This is my attempt thus far, but I haven't been able to get it to work:

Code:
#!/usr/bin/perl -w

my @height=(1,2,3,4);

my @width=(1,2,3,4);

foreach my $height (@height)
{
    foreach my $width (@width)
    {
		$filename = "height_${height}_width_${width}.txt";
		system("sed -i "" '1,4 ${height} ${width}' $filename");
	}
}


Last edited by pludi; 06-02-2011 at 10:55 AM..
# 2  
This bash script will do it for you:
Code:
#!/bin/bash

max_i=4
max_j=4

for i in `seq 1 $max_i`; do
        for j in `seq 1 $max_j`; do
                if [ -f height_${i}_width_${j}.txt ]; then
                        echo "Processing file height_${i}_width_${j}.txt"
                        sed -i "s/^/$i $j /g"  height_${i}_width_${j}.txt
                else
                        echo "File height_${i}_width_${j}.txt does not exist"
                fi
        done
done

You only have to change max_i and max_j to the maximum values for height and width.
# 3  
The only problem is that, since I'm doing this on Mac OSX, it's telling me that the command seq is not found:

Quote:
line 15: seq: command not found
What else would I use?
# 4  
Instead of `seq ` $max_i` you could use {1..3} (if you are using the bash shell). The only downside is that you have to use the actual value as the max value and not a variable.

Alternatively, you could try to see if you have jot installed - it should be the Mac OS equivalent for seq.
# 5  
Well, I tried both of those, and those fixed that problem, but then I got another error message (this time with sed):

Quote:
sed: 1: "height_1_width_1.txt": command c expects \ followed by text
# 6  
I don't have a Mac OS sed to test it with, but you could try it by changing the sed line to:
Code:
sed -i "s/^/${i} ${j} /g"  height_${i}_width_${j}.txt

# 7  
Well, I tried that, and I got the exact same error message.
 

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

Test Your Knowledge in Computers #144
Difficulty: Easy
IEEE designed POSIX around the common structure of the major competing variants of the Unix system, publishing the first POSIX standard in 1988.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Renaming files with Spaces in Filenames

Entry level scripter. Any help appreciated. for file in *; do rename '4321_' '' $file ; done Doesn't work for files with spaces in between FOr eg 4321_1004.dat is renamed to 1004.dat but 4321_1004 2008.dat stays the same (1 Reply)
Discussion started by: davnavin
1 Replies

2. Shell Programming and Scripting

Sed script for appending & prepending

Hello Mates I am trying to write a script, which appends and prepends the text in a file. I tried testing with a small file and it worked fine. but for the large file, the script is wiping the entire file and adds only the word to be appended in the file. mv $file_name $file_name.bak sed... (6 Replies)
Discussion started by: sathyaac
6 Replies

3. UNIX for Dummies Questions & Answers

Prepending lines with file name

I have a number of dat-files, such as abc.dat, def.dat etc, as follows: 2011-07-01 100.0 2011-07-02 101.0 2011-07-03 101.7 I want to prepend the file with the base file name; so for abc.dat it would result in the following: abc 2011-07-01 100.0 abc 2011-07-02 101.0 abc 2011-07-03 ... (5 Replies)
Discussion started by: figaro
5 Replies

4. Shell Programming and Scripting

Sorting a list of filenames but keeping the path information.

Hi All I've googled around for this and can't see a way of doing it. I have a file that contains a number of records that are layed out something like the following. /path/to/directory/that/contains/a/file/I/need/filename.pdf The path itself can vary both in terms of the names and the... (7 Replies)
Discussion started by: Bashingaway
7 Replies

5. Shell Programming and Scripting

Redirection after prepending timestamp

Hi all, I have little experience with Scripting so hoping someone may be able to help me or point me in the right direction. I have a shell script which was outputting uncaught exceptions to a log file. $JAVA_MAIN_CLASS > $LOGNAME 2>&1 What I want to be able to do is prepend a timestamp on... (8 Replies)
Discussion started by: MacAonghusa
8 Replies

6. AIX

How to grep filenames from a file in other files?

Hi, We have a file called applcust.txt where we keep records of our customizations in the following format. We want to verify whether the file, which is in 3rd column in this file is there in another file called patch999999.log to find out if any of our customization has got overwritten by the... (2 Replies)
Discussion started by: sshah1001
2 Replies

7. Shell Programming and Scripting

Conditionally prepending text

I am currently writing a script to compare a file list created over an FTP connection to a local directory. I have cleaned the FTP file list up so that I just have a raw list of filenames however due to the directory structure employed (both locally and on the ftp site) I need to prepend each line... (6 Replies)
Discussion started by: Dal
6 Replies

8. Shell Programming and Scripting

copy all files with the same filenames as those in another folder

Hi, all: I've got two folders, folder A contains some image files (say, 100 files) in .jpg format; folder B contains all description files (say, 500 files) in .txt format. All image files in folder A are able to find their corresponding description files in folder B. That is to say,... (3 Replies)
Discussion started by: jiapei100
3 Replies

9. Shell Programming and Scripting

Getting a list of filenames of moved files

I'm moving a list of files of some extension and I wish to output the moved filenames into a text file, I tried using the command below, but after all the files are moved, I got a blank file. find /abc/temp -type f -mtime +365 \( -name "*.bak" -o -name "*.log" \) -exec mv -f {} /junk \; >>... (3 Replies)
Discussion started by: chengwei
3 Replies

10. Shell Programming and Scripting

Finding pattern & prepending a line with text

Hello Dudes, I have a task to make a unix shell script that should search for a specific TEXT in a file.If that TEXT is found, shell script should add a comment statement before that TEXT line. Ex : LINE 1 xxxxx LINE 2 xxxx CALL xxxx LINE 3 xxxx PERFORM UNTIL if i... (1 Reply)
Discussion started by: kirrushna
1 Replies

Featured Tech Videos