Checking and replacing first line in text file, one-liner?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Checking and replacing first line in text file, one-liner?
# 1  
Old 04-02-2018
Checking and replacing first line in text file, one-liner?

Hello,
I'm looking to check only the first line of a file to see if it is a format string, like

Code:
# -*- coding: utf-8; mode: tcl; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -\*- vim:fenc=utf-8:ft=tcl:et:sw=2:ts=2:sts=2

if the first line is anything else, insert the above string.

I'd appreciate a one liner as I'm putting this command inside of a

Code:
find . -depth -name "*.tcl" -type f -writeable ! -executable -exec awk INSERT_COOL_LINER

so far I'm hacking awk that looks like
Code:
awk 'NR==1 && /^#./ {print "format string exists";exit 1} {print "no format string";exit 1}' test.tcl

which correctly detects if the format string is there or not but can't seem to figure out how to get awk to redirect the pipe to insert the format string?

Thanks
# 2  
Old 04-02-2018
gnu?
Code:
string='# -*- coding: utf-8; mode: tcl; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -\\*- vim:fenc=utf-8:ft=tcl:et:sw=2:ts=2:sts=2'

sed -i '1{/^#./! s/.*/'"$string"'/}' test.tcl

This User Gave Thanks to rdrtx1 For This Post:
# 3  
Old 04-02-2018
Quote:
Originally Posted by rdrtx1
gnu?
Code:
string='# -*- coding: utf-8; mode: tcl; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -\\*- vim:fenc=utf-8:ft=tcl:et:sw=2:ts=2:sts=2'

sed -i '1{/^#./! s/.*/'"$string"'/}' test.tcl

Sweet! Thanks.
# 4  
Old 04-02-2018
Did you want to replace the first line or insert before it? If the latter, try
Code:
sed  -i -e "1{/^#./! i$string" -e"}" file

or
Code:
sed  -i -e "1{/^#./! s/.*/$string\n&/" -e"}" file

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Perl one liner in bash script not replacing hours and minutes [HH:MM]

Hi I want to replace time stamp in the following line PROCNAME.Merge.exchMon.CODE.T_QSTART 08:45 read assuming the new time stamp is 09:45 ; the line is getting replaced as below :45 read I'm trying to use the perl one liner in bash script perl -pi... (4 Replies)
Discussion started by: charlie87
4 Replies

2. Shell Programming and Scripting

Add previous text when replacing comma with new line

Hi, I've got this output: # cat test2.txt TM1ITP1-TMNLSTP1 SLC00=0,SLC01=0,SLC02=0,SLC03=0 if I just use cat test2.txt | tr "," "\n" I'll end up very near to what I'm trying to achieve: TM1ITP1-TMNLSTP1 SLC00=0 SLC01=0 SLC02=0 SLC03=0 But how can i eventually add the term... (1 Reply)
Discussion started by: nms
1 Replies

3. Shell Programming and Scripting

[Solved] Replacing line of text while file is closed

Is it possible to replace a line of text within a file while it's closed with a single command or a script? Please show me an example or point me to a webpage that shows an example. The file has this line of text: LoginGraceTime 100 I want to replace it with the following: ... (2 Replies)
Discussion started by: wdg74
2 Replies

4. Shell Programming and Scripting

Checking whether the entered text is file or not

how to check that the "file path" entered by the user has the valid file. (6 Replies)
Discussion started by: Rashid Khan
6 Replies

5. Shell Programming and Scripting

Replacing text in Perl given by command line

Hi I need to write a Perl script that the file given as first argument of the command line that will find all occurrences of the string given as the third argument of the command line and replace with the string given as the fourth argument. Name newfound file is specified as the second... (3 Replies)
Discussion started by: nekoj
3 Replies

6. Shell Programming and Scripting

Replacing text on every third line

I have file like this "copy table_name from filea.txt on node replace delimiter '|';" "copy table_name from fileb.txt on node replace delimiter '|';" "copy table_name from filec.txt on node replace delimiter'|';" "copy table_name from filee.txt on node replace delimiter '|';" "copy... (1 Reply)
Discussion started by: nnani
1 Replies

7. Shell Programming and Scripting

Replacing Awk with One-liner Perl

can someone help me translate the following command, from: /usr/bin/awk "/^$TOFDAYM $TOFDAYD /,0" $LOGFILE to something like perl -e ..... basically, i want to use perl to do awk functions within a shell script. i want to do the above awk, using perl. any suggestions? (9 Replies)
Discussion started by: SkySmart
9 Replies

8. Shell Programming and Scripting

Delete a line in a file starting with - Perl one-liner

Hi I need a perl onliner to delete a line in a file starting with few words. Example file.txt ---------- my name is don I live in London I am woking as engineer I want to delete a line starting with 'I live in' using perl oneliner and in place edit with out temporary files Thanks... (2 Replies)
Discussion started by: ammu
2 Replies

9. Shell Programming and Scripting

checking text file

Hello, I have the following report (report.txt) file (see attached). I would like to check the file and if the field is error, then showing error message at output. 1. In the report, 1st, 2st and 3nd line can be ignore to check 2. start to check line 4 (each field use "," to split - 1st... (1 Reply)
Discussion started by: happyv
1 Replies

10. Shell Programming and Scripting

Replacing all but last Hex characters in a text line

I must remove hex characters 0A and 0D from several fields within an MS Access Table. Since I don't think it can be done in Access, I am trying here. I am exporting a Table from Access (must be fixed length fields, I think, for my idea to work here) into a text format. I then want to run a... (2 Replies)
Discussion started by: BAH
2 Replies
Login or Register to Ask a Question