Visit The New, Modern Unix Linux Community


Search for a pattern and replace a space at specific position with a Character in File


 
Thread Tools Search this Thread
Contact Us Post Here to Contact Site Administrators and Moderators Search for a pattern and replace a space at specific position with a Character in File
# 1  
Search for a pattern and replace a space at specific position with a Character in File

In file, we have millions of records each of 1000 in length. And at specific position say 800 there is a space, we need to replace it with Character X if the ID in that row starts with 123.

So far i have used the below which is replacing space at that position to X but its not checking for records which have ID as 123.

Code:
awk '
    function repl(s,f,t,v)
    {
        return substr(s,1,f-1) sprintf("%-*s", t-f+1, v) substr(s,t+1)
    }

    {
        a=repl($0,800,800,"X")
        print a
    }
' infile


Thanks


Moderator's Comments:
Mod Comment Use code tags, thanks.

Last edited by zaxxon; 02-23-2017 at 03:31 AM.. Reason: code tags and indention
# 2  
Code:
perl -npi.bak -e ' s/(123.{797}) /${1}X/' infile

This User Gave Thanks to Skrynesaver For This Post:
# 3  
Thanks for your script. After execution just .bak file got created and space remained as it is i.e. no replacement with X.

Could you pls have a look.
# 4  
Code:
$ cat test.file
123andsomeothervalues with a space at position 22
Not 123 but with the  space
123 but no spacein the appropriate column

$ perl -npi.bak -e 's/^(123.{18}) /$1X/' test.file

$ cat test.file
123andsomeothervaluesXwith a space at position 22
Not 123 but with the  space
123 but no spacein the appropriate column

If the space is in position 800, then there a 799 characters before it not 800 so the quantifier should be 796 ie:
Code:
perl -npi.bak -e ' s/(123.{796}) /${1}X/' infile

Perhaps my ability to count was compromised by a dangerous caffeine deficiency, currently remedying this cU.
This User Gave Thanks to Skrynesaver For This Post:

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #84
Difficulty: Easy
Windows 3.1, Windows 95, Windows 98, and Windows ME were all based on DOS.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Count specific character of a file in each line and delete this character in a specific position

I will appreciate if you help me here in this script in Solaris Enviroment. Scenario: i have 2 files : 1) /tmp/TRANSACTIONS_DAILY_20180730.txt: 201807300000000004 201807300000000005 201807300000000006 201807300000000007 201807300000000008 2)... (10 Replies)
Discussion started by: teokon90
10 Replies

2. Shell Programming and Scripting

Search for a string at a particular position and replace with blank based on position

Hi, I have a file with multiple lines(fixed width dat file). I want to search for '02' in the positions 45-46 and if available, in that lines, I need to replace value in position 359 with blank. As I am new to unix, I am not able to figure out how to do this. Can you please help me to achieve... (9 Replies)
Discussion started by: Pradhikshan
9 Replies

3. Shell Programming and Scripting

Find character and Replace character for given position

Hi, i want find the character '-' in a file from position 284-298, if it occurs i need to replace it with 'O ' for the position in the file. How to do that using SED command. thanks in advance, Sara (9 Replies)
Discussion started by: Sara183
9 Replies

4. Emergency UNIX and Linux Support

Replace nth position character of all the lines in file

I want to replace 150th character of all the lines in a file using sed or awk... searched the forums but didn't find exact answer (9 Replies)
Discussion started by: greenworld123
9 Replies

5. Shell Programming and Scripting

position specific replace in file

How to replace the position specific values in the file.. i searched a lot the forums but i couldn't able to do... i have file like below 576666666666666666666666666 7878 897987 121 0asdas Y12 5900fbb 777 09JJJ 78798347892374 234234234364 234232898 89HJHIHIGIUG989902743748327khjkhkjlh... (6 Replies)
Discussion started by: greenworld123
6 Replies

6. Shell Programming and Scripting

Using sed to replace specific character and specific position

I am trying to use sed to replace specific characters at a specific position in the file with a different value... can this be done? Example: File: A0199999123 A0199999124 A0199999125 Need to replace 99999 in positions 3-7 with 88888. Any help is appreciated. (5 Replies)
Discussion started by: programmer22
5 Replies

7. Shell Programming and Scripting

Insert character in a specific position of a file

Hi, I need to add Pipe (|) at 5th and 18th position of all records a file. How can I do this? I tried to add it at 5th position using the below code. It didnt work. Please help!!! awk '{substr($0,5,1) ~ /|/}{print}' $input_file > $temp_file (1 Reply)
Discussion started by: gpaulose
1 Replies

8. Shell Programming and Scripting

Print lines with specific character at nth position in a file

I need to print lines with character S at nth position in a file...can someone pl help me with appropriate awk command for this (1 Reply)
Discussion started by: manaswinig
1 Replies

9. Shell Programming and Scripting

Print lines with specific character at nth position in a file

I need to print lines with character S at nth position in a file...can someone pl help me with appropriate awk command for this (2 Replies)
Discussion started by: manaswinig
2 Replies

10. Shell Programming and Scripting

read space filled file and replace text at specific position

Hi I have a spaced filled file having records like below: What I want is to read line having RT3 at position 17-19 then go to position 2651 check the 18 characters (might be space filled till 18 characters). This position should have a... (6 Replies)
Discussion started by: COD
6 Replies

Featured Tech Videos