1

My file looks like this:

record=123
date=2012.01.20 10:22

In the bash file I do cat myfile.ini, and then I need to use something like explode, because I need ONLY to grep the 123 numeric record data, and nothing else.

How it can be done in the bash ?

0

4 Answers 4

4
awk -F'=| ' '/record/ {print $2}'

Substitute "date" for "record" in the command above to get the date (the time would be in $3).

This keys on the names of the variables rather than depending on a regex match of the value. It uses spaces or equal signs as field separators.

Sign up to request clarification or add additional context in comments.

2 Comments

Nice one, but it doesn't work if there is a white space in the record (or date). fe: record= 1 or date=2012-01-20 16:30.
@Cyclone: I describe the case where there is a date and time separated by a space (as shown in the question). It is true that it would fail if the input file is not "well formed". If you want the date and time together, you can use -F'='.
3

If you have control over the ini file, rewrite it as:

record=123
date="2012.01.20 10:22"

Then in your "bash file" you do

. myfile.ini

echo $record

This is the typical approach. (if you have control over the ini file)

1 Comment

As long as you do have control over the file. Because in some cases this approach could be a security hazard (since any commands in the file would be executed).
2

You can use:

#!/bin/sh
VALUE="`grep '^record=' myfile.ini |sed 's/[^0-9]//g'`"

2 Comments

If there could be more than one "record=" line and you want the first one only, do VALUE="grep '^record=' myfile.ini | head -1 | sed 's/[^0-9]//g'"
Thanks, works fine, could you also tell me , how can I grep the date after the date= sign?
1

You can do something like this:

awk '/=[0-9]+$/' file.txt

to print only the line with numeric content after = sign on stdout.

However if you just want to capture 123 into a variable then you can use:

val=$(awk -F"=" '/=[0-9]+$/{print $2}' file.txt)

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.