awk - change variable on fly


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers awk - change variable on fly
# 1  
Old 04-20-2012
awk - change variable on fly

Hello All,

I have csv file, where one of fields is date (yyyy/mm/dd 00:00:00). Using awk I am trying to find all records with date newer/older than specific date. My idea was to compare unix timestamps of both dates:
Code:
start=`date +%s -d "$DateStart"`
awk -v start="$start" -v current=`date +%s -d $10` 'current < start' file.csv > temp.file

However awk dont "see" variable $10. Is there any way to pass value from this field to date command?

Thank you in advance for any tips.

Kind regards,
# 2  
Old 04-20-2012
Hi, try ${10}
# 3  
Old 04-20-2012
Thank you for (very) quick reply Smilie

I tried:
Code:
awk -v start="$start" -v current=`date +%s -d ${10}` 'current < start' file.csv > temp.file

But I receive:
Code:
date: option requires an argument -- 'd'
Try `date --help' for more information.

Maybe I should use something like below (pseudo-code):
Code:
awk -v start="$start" 'system("date +%s -d $10") < start' file.csv > temp.file

?

Last edited by haczyk; 04-20-2012 at 08:42 AM.. Reason: Add tags
# 4  
Old 04-20-2012
try the system() call in awk
[code
start=`date +%s -d "$DateStart"`
awk -v start="$start" 'system("date +%s -d " $10) < start' file.csv > temp.file
[/code]
# 5  
Old 04-20-2012
Using "system" I have error:
Code:
date: extra operand `00:00:00'
Try `date --help' for more information.

But I see where is an issue....Unlucky $10 must be in double qoutas:
#date +%s -d "2008/12/20 00:00:00"
1229727600
# date +%s -d 2008/12/20 00:00:00
date: extra operand `00:00:00'
Try `date --help' for more information.
#

Hm...so how can I surround this variable with double quotas? This is not working:
Code:
awk -v start="$start"  'system("date +%s -d " "$10") < start' file.csv > temp.file

Thank you Jim for hint.
# 6  
Old 04-20-2012
OK, now I get it, you were not trying to use shell variable ${10}, but awk variable $10. Check if $10 does indeed contain the date. If so, you would need something like this (not tested), but test if yyyy/mm/dd is the right format for -d.
Code:
awk -v start="$start" '{"date +%s -d "$10 | getline current} current < start' file.csv > temp.file

Edit: so if time is in $11, then that would be something like:
Code:
awk -v start="$start" '{"date +%s -d \"" $10 " " $11 "\"" | getline current} current < start' file.csv > temp.file


Last edited by Scrutinizer; 04-20-2012 at 09:12 AM..
# 7  
Old 04-20-2012
Yes, exactly - I need use awk variable ..in strange way :d

In my case field "$10" contains for example"2008/12/20 00:00:00" - thats why I need to put this field in double quotas.
@Scrutinizer Thank you for help. I modifed your command into this:
Code:
awk -v start="$start" '{"date +%s -d \""$10"\"" | getline current} current > start' file.csv > temp.file

All looks fine, but at the end I have:
Code:
/bin/sh: Syntax error: Unterminated quoted string

Did I miss something ?
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Make change to variable value inside of awk script

Hello, I have text data that looks like this, Mrv16a3102061815532D 6 6 0 0 0 0 999 V2000 -0.4018 1.9634 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -1.1163 1.5509 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -1.1163 0.7259 ... (9 Replies)
Discussion started by: LMHmedchem
9 Replies

2. UNIX for Dummies Questions & Answers

Change variable value

I have big XML which i want to change all VERSIONNUMBER equal to 1,in existing file values of VERSIONNUMBER will be different as below now i want to change all VERSIONNUMBER values qual to 1.Please help me which will convert versionnumber values. <SHORTCUT OBJECTSUBTYPE ="" OBJECTTYPE ... (5 Replies)
Discussion started by: katakamvivek
5 Replies

3. Shell Programming and Scripting

I can't change the value of my variable!

I made this HEADMAKER variable to pull the header from the first file in the loop, but then to stop so it doesn't override the file with later loops. However, I CANNOT get it to reassign the value of my variable away from "FIRST". I have also tried it with 1 and 0, and with and without quotes and... (3 Replies)
Discussion started by: crankymonkey
3 Replies

4. Shell Programming and Scripting

Change Variable Value from Multiple Scripts and Use these Variable

Hi to All, Please find below details. file_config.config export file1_status="SUCCESS" export file2_status="SUCCESS" file_one.sh I am calling another two shell script from these script. I need to pass individual two script status (If it's "FAILED") to file_main.sh. file_main.sh I... (2 Replies)
Discussion started by: div_Neev
2 Replies

5. Shell Programming and Scripting

Change the filename variable value

Hi guys, I have a variable where i am storing the filename (with full path). I just need the value before ".txt". But instead of getting the filename i am getting the contents of the filename. FileName=/appl/data/Input/US/Test.txt a=`awk -F"." '{print $1}' ${FileName}` echo $a... (3 Replies)
Discussion started by: mac4rfree
3 Replies

6. Shell Programming and Scripting

using awk for setting variable but change the output of this variable within awk

Hi all, Hope someone can help me out here. I have this BASH script (see below) My problem lies with the variable path. The output of the command find will give me several fields. The 9th field is the path. I want to captured that and the I want to filter this to a specific level. The... (6 Replies)
Discussion started by: Cowardly
6 Replies

7. Shell Programming and Scripting

Store Host lookup in variable ("on the fly")

Hi, I'm new here. I was wondering why I can't store a host lookup in a variable. for line in $(< blacklist) do STOREIP=host $line; if ]; then $line >> blacklist2; else $line >> blacklist3; fi done Result: "ip" command not found .. so how would I store the host lookup in the... (2 Replies)
Discussion started by: sOliver
2 Replies

8. Shell Programming and Scripting

awk: change string variable

Hi. How to change string variable in awk? for example, I parse with awk script text file named some_name_with_extension.txt I want to print only some_name in my script .... varCompName = FILENAME print varCompName How to put not all symbols from FILENAME to variable? thank you This... (4 Replies)
Discussion started by: cintlt
4 Replies

9. Shell Programming and Scripting

Change only the name of a variable

if I have a variable named z inside a java file, is there any way to globally change the name of the variable and all its occurences as a variable? (but not any other z that is not part of that variable name) (3 Replies)
Discussion started by: lydiaflamp
3 Replies

10. Shell Programming and Scripting

How to change awk and shell variable value?

In awk script, #!/bin/sh awk 'BEGIN{i=0;}{i=i+5;}END{print i}' in.txt vr=0; vr=$i; echo "$vr" How can i assign that value of i in $vr(variable) of shell script? (7 Replies)
Discussion started by: cola
7 Replies
Login or Register to Ask a Question