Sponsored Content
Top Forums Shell Programming and Scripting Search for multiple string and replace with respective values Post 302503703 by drl on Friday 11th of March 2011 11:07:15 AM
Old 03-11-2011
Hi.

If you are doing this yourself, perhaps this is something you can build upon. This would need to read in the pairs of strings, old and new, then search each line for old in the second field:
Code:
#!/usr/bin/env bash

# @(#) s4	Demonstrate FIELDWIDTH and substitution.

# Utility functions: print-as-echo, print-line-with-visual-space.
pe() { for i;do printf "%s" "$i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
# Context for local environment.
[ -f ~/bin/context ] && . ~/bin/context awk

FILE=${1-data1}

pl " Data file $FILE:"
cat $FILE

# 1FMEU64    --BBBB
pl " Sample results, awk with FIELDWIDTHS, first pattern only:"
awk '
BEGIN	{ FIELDWIDTHS = " 24 11 80" ; print "FIELDWIDTHS =", FIELDWIDTHS }
$2 ~ /1FMEU64/	{ print ; $2 = "BBBB" ; l = length($3) 
					printf("%24s%-11s%-*s\n",$1,$2,l,$3) }
' $FILE

exit 0

producing:
Code:
% ./s4

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 2.6.32-5-686, i686
Distribution        : Debian GNU/Linux wheezy/sid 
GNU bash 4.1.5
GNU Awk 3.1.7

-----
 Data file data1:
3FADP4CJ6BM103485FP8FC022FMDK38C39B2010-08-212010-10-20
4M2EU38807UJ02689VT0ZD0M1FMEU64    2008-02-292010-12-27
1FMEU64E39UA36544NS1CD0M5LMFU275   2009-07-042010-12-21
1FAHP2EW0AG131631OQ9AA1A1ZVHT82H28 2010-01-162010-12-21
1FMEU3BE6AUF00576ER9AA1A           2010-08-072010-12-23
1FMEU33E18UB03690FR9AA1A           2008-11-082010-12-23

-----
 Sample results, awk with FIELDWIDTHS, first pattern only:
FIELDWIDTHS =  24 11 80
4M2EU38807UJ02689VT0ZD0M1FMEU64    2008-02-292010-12-27
4M2EU38807UJ02689VT0ZD0MBBBB       2008-02-292010-12-27

Not all versions of gawk that I have encountered handle FIELDWIDTHS correctly.

I think using the builtin function unpack in perl might an alternate method.

Best wishes ... cheers, drl
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl: Search for string on line then search and replace text

Hi All, I have a file that I need to be able to find a pattern match on a line, search that line for a text pattern, and replace that text. An example of 4 lines in my file is: 1. MatchText_randomNumberOfText moreData ReplaceMe moreData 2. MatchText_randomNumberOfText moreData moreData... (4 Replies)
Discussion started by: Crypto
4 Replies

2. UNIX for Dummies Questions & Answers

Search for a string and replace the searched string in the same position in samefile

Hi All, My requisite is to search for the string "0108"(which is the year and has come in the wrong year format) in a particular column say 4th column in a tab delimited file and then replace it with 2008(the correct year format) in the same position where 0108 was found in the same file..The... (27 Replies)
Discussion started by: ganesh_248
27 Replies

3. Shell Programming and Scripting

Search, replace string in file1 with string from (lookup table) file2?

Hello: I have another question. Please consider the following two sample, tab-delimited files: File_1: Abf1 YKL112w Abf1 YAL054c Abf1 YGL234w Ace2 YKL150w Ace2 YNL328c Cup9 YDR441c Cup9 YDR442w Cup9 YEL040w ... File 2: ... ABF1 YKL112W ACE2 YLR131C (9 Replies)
Discussion started by: gstuart
9 Replies

4. Shell Programming and Scripting

awk - replace number of string length from search and replace for a serialized array

Hello, I really would appreciate some help with a bash script for some string manipulation on an SQL dump: I'd like to be able to rename "sites/WHATEVER/files" to "sites/SOMETHINGELSE/files" within the sql dump. This is quite easy with sed: sed -e... (1 Reply)
Discussion started by: otrotipo
1 Replies

5. Shell Programming and Scripting

String search and replace in multiple files.

Hello. I have five config files in /etc that I want to edit in one click for testing. I would like to make a script like this : #!/bin/bash # a_file="/etc/file_1" src_str="src_string_1" rpl_str="rpl_string_1" calling_sed_or_awk_or_whatelse $a_file search_for_all $src_str replace_with... (4 Replies)
Discussion started by: jcdole
4 Replies

6. Shell Programming and Scripting

awk + gsub to search multiple input values & replace with located string + extra text

Hi all. I have the following command that is successfully searching for any one of the strings on all lines of a file and replacing it with the instructed value. cat inputFile | awk '{gsub(/aaa|bbb|ccc|ddd/,"1234")}1' > outputFile This does in fact replace any occurrence of aaa, bbb,... (2 Replies)
Discussion started by: dazhoop
2 Replies

7. Shell Programming and Scripting

Search & Replace: Multiple Strings / Multiple Files

I have a list of files all over a file system e.g. /home/1/foo/bar.x /www/sites/moose/foo.txtI'm looking for strings in these files and want to replace each occurrence with a replacement string, e.g. if I find: '#@!^\&@ in any of the files I want to replace it with: 655#@11, etc. There... (2 Replies)
Discussion started by: spacegoose
2 Replies

8. UNIX for Dummies Questions & Answers

Search for a string,delete the line and replace with new string in a file

Hi Everyone, I have a requirement in ksh where i have a set of files in a directory. I need to search each and every file if a particular string is present in the file, delete that line and replace that line with another string expression in the same file. I am very new to unix. Kindly help... (10 Replies)
Discussion started by: Pradhikshan
10 Replies

9. UNIX for Beginners Questions & Answers

How to use a grep search to search for a specific string within multiple directories?

Lets say I have a massive directory which is filled with other directories all filled with different c++ scripts and I want a listing of all the scripts that contain the string: "this string". Is there a way to use a grep search for that? I tried: grep -lr "this string" * but I do not... (3 Replies)
Discussion started by: Circuits
3 Replies

10. UNIX for Beginners Questions & Answers

Search partial string in a file and replace the string - UNIX

I have the below string which i need to compare with a file and replace this string in the file which matches closely. Can anyone help me on this. string(Scenario 1)- user::r--,user::ourfrd:r-- String(Scenario 2)- user::r-- File **** # file: /local/Desktop/myfile # owner: me # group:... (6 Replies)
Discussion started by: sarathy_a35
6 Replies
DwtSTextReplace(3Dwt)													     DwtSTextReplace(3Dwt)

Name
       DwtSTextReplace - Replaces a portion of the current text string in the simple text widget or inserts a new substring in the text.

Syntax
       void DwtSTextReplace(widget, from_pos, to_pos, value)
	    Widget widget;
	    int from_pos, to_pos;
	    DwtCompString value;

Arguments
       widget	 Specifies the ID of the simple text widget whose text string you want to replace.

       from_pos  Specifies the beginning character position within the text string marking the text being replaced.

       to_pos	 Specifies the last character position within the text string marking the text being replaced.

       value	 Specifies the text to replace part of the current text in the simple text widget.

Description
       The  DwtSTextReplace  function  replaces  part of the text string in the simple text widget.  Within the window, the positions are numbered
       starting from 0 and increasing sequentially.  For example, to replace the second and third characters in the string, from_pos should  be  1
       and to_pos should be 3.	To insert a string after the fourth character, from_pos and to_pos should both be 4.

See Also
       DwtSText(3Dwt),  DwtSTextGetString(3Dwt),  DwtSTextGetEditable(3Dwt),  DwtSTextSetEditable(3Dwt), DwtSTextGetMaxLength(3Dwt), DwtS-
       TextSetMaxLength(3Dwt), DwtSTextSetSelection(3Dwt), DwtSTextClearSelection(3Dwt), DwtSTextGetSelection(3Dwt)
       Guide to the XUI Toolkit: C Language Binding
       Guide to the XUI Toolkit Intrinsics: C Language Binding

															     DwtSTextReplace(3Dwt)
All times are GMT -4. The time now is 08:17 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy