Sponsored Content
Full Discussion: How to use gsub and array
Top Forums Shell Programming and Scripting How to use gsub and array Post 302593804 by chihung on Saturday 28th of January 2012 10:10:35 PM
Old 01-28-2012
Your dollar sign in {$String1} has to be escaped otherwise they will think it is the end anchor in the regular expression.

Also, I don't think there is a way to back reference in awk, unlike sed

Anyway, herer is my attempt with the following assumptions:
  • one occurrence of {$String1} in each line
  • there is a max of 9 languages, ie String1 to String9
Code:
awk '
NR==FNR {
	n=split($0, a, "[; ]")
	array[a[1]]=a[n]
	next
}
/{\$String[0-9]}/ {
	start=index($0, "{$String")
	string=substr($0, start, 10)
	re=string
	gsub("\$", "\\$", re)
	gsub(re, array[string])
	print
	next
}
{
	print
}' language.txt inputfile

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Gsub and nawk

Hello I have problem with reg-expr and function gsub(); File that I want to preprocess look like this: int table ; printf(" variable : ", variable) ; Using nawk I try something like this: for ( .... ) { line = $0 reg_expr = "\.\=]*" "" variable "" "\.\=]*" ; gsub( reg_expr... (1 Reply)
Discussion started by: scotty_123
1 Replies

2. Shell Programming and Scripting

Help with AWK and gsub

Hello, I have a variable that displays the following results from a JVM.... 1602100K->1578435K I would like to collect the value of 1578435 which is the value after a garbage collection. I've tried the following command but it looks like I can't get the > to work. Any suggestions as... (4 Replies)
Discussion started by: npolite
4 Replies

3. Shell Programming and Scripting

awk gsub

Hi all I want to do a simple substitution in awk but I am getting unexpected output. My function accepts a time and then prints out a validation message if the time is valid. However some times may include a : and i want to strip this out if it exists before i get to the validation. I have shown... (4 Replies)
Discussion started by: pxy2d1
4 Replies

4. Shell Programming and Scripting

Help with awk and gsub using C shell

Being new to awk, I am still running into little stupid things. For this issues I am trying to search for all occurrences of a string in a file and replace all of those occurrences with a replacement string. I tried doing awk '{gsub("|750101|", "|000000|", $0)}' infile > outfile Unix... (3 Replies)
Discussion started by: jclanc8
3 Replies

5. Shell Programming and Scripting

awk gsub with variables?

Hey, I would like to replace a string by a new one. Teh problem is that both strings should be variables to be flexible, because I am having a lot of files (with the same structure, but in different folders) for i in daysim_* do cd $i/5/ folder=`pwd |awk '{print $1}'` awk '{ if... (3 Replies)
Discussion started by: ergy1983
3 Replies

6. Shell Programming and Scripting

awk extend array for gsub()

Want to extend an array to remove the rest of the field $2. Can anybody suggest the correct code? This code: awk 'NR==FNR{x;next}{for(r in x) gsub(r/.*/, "",$2)}1' patternlist infileneither this works: awk 'NR==FNR{x;next}{for(r in x) r=r+"/.*/" gsub(r/.*/, "",$2)}1' patternlist infile (5 Replies)
Discussion started by: sdf
5 Replies

7. Shell Programming and Scripting

GSUB/Regex Help

I am trying to write my gsub regex to replace a bunch of special characters with spaces, so i can split it to an array and look at each word independently. However, my regex skills are slightly lacking and I appear to be missing a quote or something here. I am trying to replace the following... (6 Replies)
Discussion started by: nitrobass24
6 Replies

8. Shell Programming and Scripting

awk gsub

Hi, I want to print the first column with original value and without any double quotes The output should look like <original column>|<column without quotes> $ cat a.txt "20121023","19301229712","100397" "20121023","19361629712","100778" "20121030A","19361630412","100838"... (3 Replies)
Discussion started by: ysrini
3 Replies

9. Shell Programming and Scripting

Gsub function in awk

Hello, I had some difficulty to understand the gsub function and maybe the regex in this script to remove all the punctuations: awk 'gsub(//, " ", $0)' text.txtFile text.txt: This is a test for gsub I typed this random text file which contains punctuation like ,.;!'"?/\ etc. The script... (6 Replies)
Discussion started by: yifangt
6 Replies

10. Shell Programming and Scripting

Masking with gsub command

My file "test.dat" data as below Requirement is to mask(replace) all english characters with "X" EXCEPT first 7 characters of every line. my command awk '{gsub("]","X")}1' test.dat looks not working properly, Appreciate any suggestion... (6 Replies)
Discussion started by: JSKOBS
6 Replies
Parity(3)						User Contributed Perl Documentation						 Parity(3)

NAME
String::Parity, setEvenParity, setOddParity, setSpaceParity, setMarkParity, isEvenParity, isOddParity isSpaceParity, isMarkParity, Even- Bytes, OddBytes, SpaceBytes, MarkBytes, showParity, showMarkSpace - Parity (odd/even/mark/space) handling functions SYNOPSIS
use String::Parity; use String::Parity qw(:DEFAULT /show/); DESCRIPTION
setEvenParity LIST Copies the elements of LIST to a new list and converts the new elements to strings of bytes with even parity. In array context returns the new list. In scalar context joins the elements of the new list into a single string and returns the string. setOddParity LIST Like setEvenParity function, but converts to strings with odd parity. setSpaceParity LIST Like setEvenParity function, but converts to strings with space (High bit cleared) parity. setMarkParity LIST Like setEvenParity function, but converts to strings with mark (High bit set) parity. EvenBytes LIST Returns the number of even parity bytes in the elements of LIST. OddBytes LIST Returns the number of odd parity bytes in the elements of LIST. SpaceBytes LIST Returns the number of space parity bytes in the elements of LIST. MarkBytes LIST Returns the number of mark parity bytes in the elements of LIST. isEvenParity LIST Returns TRUE if the LIST contains no byte with odd parity, FALSE otherwise. isOddParity LIST Returns TRUE if the LIST contains no byte with even parity, FALSE otherwise. isSpaceParity LIST Returns TRUE if the LIST contains no byte with mark parity, FALSE otherwise. isMarkParity LIST Returns TRUE if the LIST contains no byte with space parity, FALSE otherwise. showParity LIST Like setEvenParity function, but converts bytes with even parity to 'e' and other bytes to 'o'. The function showParity must be imported by a specialised import list. showMarkSpace LIST Like setEvenParity function, but converts bytes with space parity to 's' and other bytes to 'm'. The function showMarkSpace must be imported by a specialised import list. NOTES
Don't use this module unless you have to communicate with some old device or protocol. Please make your application 8 bit clean and use the internationally standardised ISO-8859-1 character set. AUTHOR
Winfried Koenig <win@in.rhein-main.de> SEE ALSO
perl(1), Exporter(1) perl v5.8.0 1996-12-10 Parity(3)
All times are GMT -4. The time now is 05:40 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy