Sponsored Content
Top Forums Shell Programming and Scripting setter and getter functions for file manipulation with sed Post 302602895 by Corona688 on Tuesday 28th of February 2012 04:39:27 PM
Old 02-28-2012
Quote:
Originally Posted by Toorop
First of all, thanks a lot.

Hopefully, there's no misunderstanding between us, since I still don't know why the original task is much easier.
// No comments.

No /* multi-line comments. */

No { code blocks. }

No "strings".

Your code only might work under very particular circumstances, can't tell code blocks apart from each other, and may edit the heck out of the comments by accident.

I can give you something to do a specific task easily. You wanted something general, and that's hard.

This is why I asked what you actually wanted to do, not what manner you wanted to accomplish it in. Replacing values is easy enough. Giving you 'getters' and 'setters' so you can replace in exactly the manner you think you should isn't.

---------- Post updated at 03:39 PM ---------- Previous update was at 02:59 PM ----------

I still can't handle multi-line comments, so you'd better hope the variable names never show up in comments. But:

Code:
#!/bin/bash
cp data data-backup

awk 'function get(N)
{
        split(LINE[VAR[N]], A);
        sub(/;$/, "", A[2]);
        return(A[2]);
}

function set(N,V)
{
        if(!VAR[N])
        {
                LINE[++C]=N "\t" V ";"
                VAR[N]=C;
        }
        else
        {
                $0=LINE[VAR[N]];
                $2=V ";"
                LINE[VAR[N]]=$0
        }
}

/{/ && LL       {       PP[++L]=VP;     VP=VP LL "."    }
/}/             {       VP=PP[L--];                     }

{       LL=$0;  NAME=""; VALUE="";      LINE[++C]=$0     }

(NF==2) && /;$/ {       VAR[VP $1]=NR   }

END {
        set("FoamFile.version", "3.0");
        set("newvalue", "slartibartfast");
        for(N=1; N<=C; N++)    print LINE[N];
}' data-backup > data

Edit the part in red to your heart's content.

Last edited by Corona688; 02-28-2012 at 05:11 PM..
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

file name Manipulation using sed

Hi, I have a file name, for which I want to strip out the first bit and leave the rest... So I want to take the file name .lockfile-filename.10001 ,strip it and have only filename.10001 ... Thanking you all inadvance, Zak (6 Replies)
Discussion started by: Zak
6 Replies

2. Shell Programming and Scripting

How to use sed for string manipulation

Hi, I would like to know How to use use sed for manipulating string for the following situation. Basically my objective is to check validity of the filename in my shell script. I am getting a parameter like this for my shell script. Check my folder is having some space. $1=/root/krishna... (2 Replies)
Discussion started by: hikrishn
2 Replies

3. Shell Programming and Scripting

File manipulation with AWK and SED

Hello How do i check that correct input files are used while using AWk and SED for file manipulation? e.g awk '/bin/ {print $0 }' shell.txt sed 's/hp/samsung/' printers.txt how do i ensure that the correct input files I am working with are used? (5 Replies)
Discussion started by: Pauline mugisha
5 Replies

4. Shell Programming and Scripting

SED/AWK file read & manipulation

I have large number of data files, close to 300 files, lets say all files are same kind and have extension .dat , each file have mulitple lines in it. There is a unique line in each file containing string 'SERVER'. Right after this line there is another line which contain a string 'DIGIT=0',... (4 Replies)
Discussion started by: sal_tx
4 Replies

5. Shell Programming and Scripting

Manipulation with the string using sed

hello All, When I run find command on certain directory I may get one of the following output depending on configuration A. ./rel/prod/libpam.a B. ./rel/fld/libpam.a C. ./deb/detail/libpam.a D. ./deb/err/libpam.a I want to get output as below A. rel/prod B.... (2 Replies)
Discussion started by: anand.shah
2 Replies

6. Shell Programming and Scripting

sed flat file manipulation

Hello, I have a large flat file where i need to change data in columns 131-133 based on what is in columns 172-173. I am not sure if I need to read the file line by line and make the change or if I can do this in a single statement. thank you (3 Replies)
Discussion started by: gblmin
3 Replies

7. Programming

Simplify setter and getter of java class

I am trying to verify my understanding on setter and getter on java class with this example: //MaximumFinder2.java import java.util.Scanner; public class MaximumFinder2 { public static void main (String args) { Scanner input = new Scanner(System.in); ... (6 Replies)
Discussion started by: yifangt
6 Replies

8. Shell Programming and Scripting

sed for string manipulation

I have a file which contains contents like below proxy.config.cluster.mc_group_addr 224.0.1.37 proxy.config.log.logging_enabled 3 proxy.config.log.squid_log_enabled 1 Need to modify to 'proxy.config.cluster.mc_group_addr': '224.0.1.37' 'proxy.config.log.logging_enabled': '3'... (10 Replies)
Discussion started by: esham
10 Replies

9. UNIX for Beginners Questions & Answers

File manipulation place 0 before the number using sed

I'm new with sed, and i am really confused with slashes, backslashes, parentheses, I've tried reading some beginner's guide, but still trouble fixing this problem, do you have any tips where or what to read to learn more about sed? can you also help me with my problem? Note: I was tasked to use... (4 Replies)
Discussion started by: akopocpoypoy
4 Replies
UPSLOG(8)							    NUT Manual								 UPSLOG(8)

NAME
upslog - UPS status logger SYNOPSIS
upslog -h upslog [OPTIONS] DESCRIPTION
upslog is a daemon that will poll a UPS at periodic intervals, fetch the variables that interest you, format them, and write them to a file. The default format string includes variables that are supported by many common UPS models. See the description below to make your own. OPTIONS
-h Display the help message. -f format Monitor the UPS using this format string. Be sure to enclose format in quotes so your shell doesn't split it up. Valid escapes within this string are: %% Insert a single "%" %TIME format% Insert the time with strftime formatting %ETIME% Insert the number of seconds, ala time_t. This is now a 10 digit number. %HOST% insert the local hostname %UPSHOST% insert the host of the UPS being monitored %PID% insert the pid of upslog %VAR varname% insert the value of variable varname The default format string is: %TIME @Y@m@d @H@M@S% %VAR battery.charge% %VAR input.voltage% %VAR ups.load% [%VAR ups.status%] %VAR ups.temperature% %VAR input.frequency% -i interval Wait this many seconds between polls. This defaults to 30 seconds. If you require tighter timing, you should write your own logger using the upsclient(3) library. -l logfile Store the results in this file. You can use "-" for stdout, but upslog will remain in the foreground. -s ups Monitor this UPS. The format for this option is upsname[@hostname[:port]]. The default hostname is "localhost". -u username If started as root, upsmon will setuid(2) to the user id associated with username for security. If username is not defined, it will use the value that was compiled into the program. This defaults to "nobody", which is less than ideal. SERVICE DELAYS
The interval value is merely the number given to sleep(3) after running through the format string. Therefore, a query will actually take slightly longer than the interval, depending on the speed of your system. LOG ROTATION
upslog writes its PID to upslog.pid, and will reopen the log file if you send it a SIGHUP. This allows it to keep running when the log is rotated by an external program. SEE ALSO
Server: upsd(8) Clients: upsc(8), upscmd(8), upsrw(8), upsmon(8) Internet resources: The NUT (Network UPS Tools) home page: http://www.networkupstools.org/ Network UPS Tools 05/21/2012 UPSLOG(8)
All times are GMT -4. The time now is 01:32 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy