Sponsored Content
Top Forums UNIX for Dummies Questions & Answers Replacing first line of file by >filename Post 302512174 by FlyingSquirrel on Friday 8th of April 2011 02:22:20 PM
Old 04-08-2011
Here is a method to process the files one after another.

Sample Files:
-> ls S5*
S5_SK1.chr01 S5_SK1.chr02 S5_SK1.chr03

Contents of the files:
==> cat S5*
>SK1.chr01
blah
blah
blah
>SK1.chr02
blah
blah
blah
>SK1.chr03
blah
blah
blah

Write the code:
==> vi modfiles.ksh

Code:
#!/bin/ksh
### Loop through the files you intend to modify
for origfile in $(ls -1 S5*)
do
   ### Rename the file temporarily
   mv ${origfile} ${origfile}.tmp

   ### Create brand new origfile with... ">filename" on the first line
   echo "${origfile}" | awk '{printf(">%s\n", $1)}' > ${origfile}

   ### Append lines 2 to the end to the new filee
   cat ${origfile}.tmp | tail +2 >> ${origfile}

   ### Clean up work file
   rm ${origfile}.tmp
done

Run it:
==> ./modfiles.ksh

Verify the contents:
-> cat S5*
>S5_SK1.chr01
blah
blah
blah
>S5_SK1.chr02
blah
blah
blah
>S5_SK1.chr03
blah
blah
blah
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

replacing first line or lines in a file

hey guys, how do i replace only a line within a file without messing up the rest of the contents of the file? see, if possible can you guys give me a straight forward way to do this. i dont want a complex command. what i mean is i know i can accomplish this by using sed, well, i think i can,... (3 Replies)
Discussion started by: Terrible
3 Replies

2. Shell Programming and Scripting

Replacing a line in a file - HELP!!!

I have a problem in the following code ... while read line do #Get Line Number OLDLINE=`sed -n $Lineno $filename` echo "Un Changed Line : "$OLDLINE echo "Enter a New Pattern : " read NewPattern <&1 echo "NewPattern :"$NewPattern NEWLINE=`cat $filename | sed -n... (1 Reply)
Discussion started by: maxmave
1 Replies

3. UNIX for Dummies Questions & Answers

Replacing string with filename

Hi All, I've recently run a script that inserts the filename into all files of my active directory. Now I want to move the filename string and have it replace text a few lines down. In other words, here's what I'm trying to do. Here is a file called 'goodtimes': " goodtimes Hi, Welcome... (1 Reply)
Discussion started by: calrog
1 Replies

4. Shell Programming and Scripting

Replacing the last character for each line in a file

Hello, I have a csv file and will like to replace the last character of each line in the file with Z (20 Replies)
Discussion started by: 123script
20 Replies

5. UNIX for Dummies Questions & Answers

Extract first line of a file and use as filename

I am trying to find a way to create a script which will extract the first line of a file and then rename the file (or create a new file with the same content as the old file) using the first line as the name. The first line being a single word, that is. I am hopeless at programming, if anyone can... (5 Replies)
Discussion started by: s.plumb
5 Replies

6. Shell Programming and Scripting

Adding filename to each line of the file

Hi, I am a relative new bee in scripting. I need to develop a script such that the code would iterate through each file in a source directory and append every line of the file with '|' and the corresponding file filename. eg INPUT file IF927_1.dat - H|abc... (4 Replies)
Discussion started by: scripting_newbe
4 Replies

7. Shell Programming and Scripting

Replacing line 'i' of file1 with line 'j' of file 2

Hi All, As mentioned in the title I have two text files and I would like to replace line number 5 of file #1 with line number 4 of file #2 e.g. file 1 wqwert 4.4464002 3 319 286 369 46.320002 56.150002 45.100002 1 1 1 0.723 (12 Replies)
Discussion started by: f_o_555
12 Replies

8. Shell Programming and Scripting

Replacing a line in a file using sed

I have a file which has a list in it pop triangle people slow fast What I want to do is search this list and replace people with humans do the list looks like this: pop triangle human slow fast I think i use something like this.... if cat /list.txt | grep -q 'people' ; then (9 Replies)
Discussion started by: digitalviking
9 Replies

9. Shell Programming and Scripting

Replacing a line in a file

Hi all, I need to replace a line export TZ=xxxxxxxx with the line export TZ=$1 Now, "xxxxxxxx" in the above line is some unknown string and $1 is a parameter. I want the content of $1 to be replaced with "xxxxxxxx". Kindly help me how to do this in the shell scripting. (5 Replies)
Discussion started by: ddeeps2610
5 Replies

10. UNIX for Dummies Questions & Answers

Replacing part of filename

Hi guys! I have quite a lot of files like all_10001_ct1212307460308.alf* and I want to get rid of the first number for all at once like: all_ct1212307460308.alf* How can I do this in the shell? (12 Replies)
Discussion started by: TimmyTiz
12 Replies
SOCKDOWN(1)						      General Commands Manual						       SOCKDOWN(1)

NAME
sockdown - shutdown(2) a socket netpipes 4.2 SYNOPSIS
sockdown [ fd [how] ] DESCRIPTION
sockdown performs the shutdown(2) system call on one of its file descriptors specified by fd. The possible values for how are +----------+---------------------------------------------------------+ |writeonly | convert to write-only file descriptor | |0 | convert to write-only file descriptor | |writeonly | symbolic for same as above | |1 | convert to read-only file descriptor | |readonly | symbolic for same as above | |2 | complete shutdown. no more reads or writes are allowed | |totally | symbolic for same as above | +----------+---------------------------------------------------------+ The default fd is 1 (stdout) and the default how is 1. EXAMPLES
Imagine you have a machine that can perform a service (in this case conversion from ASCII to fancy postscript) : server$ faucet 3000 --in --out enscript -2rGhp - You may then connect to it with a hose. However, the first example enters deadlock : client$ hose server 3000 -in -out sh -c " cat blah.txt & cat > blah.ps " The enscript blocks waiting for input from the socket because not all of the client processes have exited. While the cat blah.txt is fin- ished, the cat > blah.ps is not, and will not be finished until the remote enscript process finishes writing. The enscript process will not finish writing until it is finished reading, but that client->server half of the socket is still open and will not be closed until all the client processes are done. The result is deadlock. So, we use sockdown to close half of the pipe client$ hose server 3000 -in -out sh -c " ( cat blah.txt ; sockdown ) & cat > blah.ps " This way when the cat blah.txt is done, half of the socket is shut down and the remote enscript process runs out of input, causing it to flush its output and exit, so eventually the whole mess finishes cleanly. Note: the & on the hose is necessary to prevent another deadlock. If we simply used the ; to serialize the two cat processes it is possi- ble that the enscript would fill up its write buffer before the first cat was done causing both processes to block and preventing the sec- ond cat from draining the pipe. Of course, that idiomatic usage of hose is so useful that it is a special form: client$ hose server 3000 -slave < blah.txt > blah.ps Ian Stirling <root@mauve.demon.co.uk> informs me that sockdown can be used in Linux's /proc/pid/fd/ directories to tear down hung network connections. I have since used this myself on a wedged MOMspider. To try this, you have to know the PID of the program and the file descriptor of the wedged socket (can sometimes be found by running strace and see if the program is stuck in a read(2) system call). If the PID is 991 and the socket's descriptor is 5, you do this as root: bash# sockdown 1 2 > /proc/991/fd/5 ERRORS
Socket operation on non-socket Invalid argument (seen on Solaris) The fd you specified does not refer to a socket. This happens when you run sockdown by itself (it is unlikely that any of the file descriptors attached to an interactive shell are actually sockets) or if you goof up your faucet/hose command and forgot to dup(2) one of your descriptors. Bad file number You gave it a bad file number for fd. If you have enough skill to actually generate this error, you probably know what is wrong. If you encounter any other errors, clue me in. SEE ALSO
netpipes (1) faucet (1), hose (1), getpeername (1), socket (2), shutdown (2), NOTES
Any normal human would assume a program this simple has to be bug free, but I am an experienced programmer. Just avoid doing anything funky like passing sockdown strings and it should serve you well. You should not have to pass it any arguments unless you are doing something fairly funky. Perhaps I should ditch the shutdown -a semantics on hose since a sockdown 1 2 would do the job. CREDITS
Ian Stirling <root@mauve.demon.co.uk>, for the idea of using this program in /proc on a Linux machine. COPYRIGHT
Copyright (C) 1995-1998 Robert Forsman This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MER- CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. AUTHOR
Robert Forsman thoth@purplefrog.com Purple Frog Software http://web.purplefrog.com/~thoth/ July 7, 1998 SOCKDOWN(1)
All times are GMT -4. The time now is 11:44 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy