Replace characters at fixed positions


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace characters at fixed positions
# 1  
Old 12-08-2015
Replace characters at fixed positions

My objective is to replace the 8th, 9th, 10th characters by 1 space per character (total 3 spaces) in a file.

I achieved this using following command:
Code:
sed 's/\(.\)/\1@/7;s/@\(...\)/   /' FileData.txt > FileData_UPDATED.txt

Another situation comes when I need to done same but excluding 1st and last lines.
I tried using following but it removed the first and last line in the output:
Code:
sed '1d;$d' FileData.txt | sed 's/\(.\)/\1@/7;s/@\(...\)/   /' > FileData_UPDATED.txt

Please suggest how the first command can be updated to exclude the first and last lines.
# 2  
Old 12-08-2015
Hi, try:
Code:
sed '1n;$n;s/./&@/7;s/@.../   /' FileData.txt

These 2 Users Gave Thanks to Scrutinizer For This Post:
# 3  
Old 12-08-2015
Hi,

Thank you very much for your response. It worked like the way I wanted. Thanks.

Is there also a way if I can skip changing the lines starting with "EDI_DC40" OR "E2EDS01" instead of 1st and last lines?
# 4  
Old 12-08-2015
Try (untested)
Code:
sed '/EDI_DC40/n;/E2EDS01/n; ...'

or, with ERE,
Code:
sed -E '/EDI_DC40|E2EDS01/n; ...'

# 5  
Old 12-08-2015
Thank you.

Code:
sed '/EDI_DC40/n;/E2EDS01/n; ...'

Getting error: "Unrecognized command: /EDI_DC40/n;/E2EDS01/n; ..."

Code:
sed -E '/EDI_DC40|E2EDS01/n; ...'

Getting error: "sed: illegal option -- E"

I am using sun-sparc. Not sure, if its due to platform difference.
# 6  
Old 12-08-2015
There must some sort of typo, perhaps you forgot the opening quote? The three dots were not meant literally by RudiC. Try:
Code:
sed '/EDI_DC40/n;/E2EDS01/n;s/./&@/7;s/@.../   /' FileData.txt

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Replace specific positions in a file

I have a fixed-length positional file. I am trying to replace content of position 4-13 (length=10) with xxxxxxxxxx. Sample 2 rows in this file: H0187459823 172SMITH, JOE H0112345678 172DOE, JANE In this example 87459823 (from 1st line) and 12345678 (from 2nd line) (both in position... (3 Replies)
Discussion started by: Diver181
3 Replies

2. Shell Programming and Scripting

Replace multiple positions in records which match crireria

I have a test file a.txt 001 123 456 789 002 This is just a 001 test data 003 file. I want to clear columns 5 and 6 if the first 3 characters are 001 using awk. I tried following but does not work. Any suggestions? awk 'BEGIN{OFS=FS=""} {if (substr($0,1,3)=="123") $5=" "; $6="... (20 Replies)
Discussion started by: Soham
20 Replies

3. UNIX for Dummies Questions & Answers

Replace alphabets from certain positions

Hi all, I have column 2 full of values like HIVE4A-56 and HIVE4-56. I want to convert all values like HIVE4A-56 to HIVE4-56. So basically I want to delete all single alphabets before the '-' which is always preceded by a number. Values already in the desired format should remain unchanged... (4 Replies)
Discussion started by: ames1983
4 Replies

4. Shell Programming and Scripting

if characters from positions 7-15 are matching 219 then replace al

Script for if characters from positions 7-15 are matching with characters from position 211-219 then replace all char from 211-219 with 9 space. Total length of record is 420. Here is the specification of the data in file. Position Field Data Type... (2 Replies)
Discussion started by: lancesunny
2 Replies

5. Shell Programming and Scripting

Replace dashes positions 351-357 & 024-043 with 0 & replace " " if exis with 04 at position 381-382

I need to replace dashes (i.e. -) if present from positions 351-357 with zero (i.e. 0), I also need to replace dash (i.e “-“) if present between position 024-043 with zero (i.e. 0) & I replace " " (i.e. 2 space characters) if present at position 381-382 with "04". Total length of record is 413.... (11 Replies)
Discussion started by: lancesunny
11 Replies

6. Shell Programming and Scripting

Replace a string within a file.. with help of positions

I have a huge file with lot of rows... with each row around 400 characters.. with spaces as well.. (e.g) Line1: "AC254600606 USDMI000001Anom01130073981 0000000000000.002005040720991231 ... (13 Replies)
Discussion started by: gopeezere
13 Replies

7. Shell Programming and Scripting

awk script replace positions if certain positions equal prescribed value

I am attempting to replace positions 44-46 with YYY if positions 48-50 = XXX. awk -F "" '{if (substr($0,48,3)=="XXX") $44="YYY"}1' OFS="" $filename > $tempfile But this is not working, 44-46 is still spaces in my tempfile instead of YYY. Any suggestions would be greatly appreciated. (9 Replies)
Discussion started by: halplessProblem
9 Replies

8. UNIX for Dummies Questions & Answers

Insert Commas at fixed positions

Hi I have a text file which is position delimited, i.e. Code1 Description1 Value1 Code2 Description2 Value2 etc. I want to import this file into MySQL so I want to convert the file into Comma delimited format. To do this I want to insert commas at fixed positions on... (7 Replies)
Discussion started by: arossco
7 Replies

9. Shell Programming and Scripting

Search and replace particular characters in fixed length-file

Masters, I have fixed length input file like FHEAD0000000001XXXX20090901 0000009000Y1000XXX2 THEAD000000000220090901 ITM0000109393813 430143504352N22SP 000000000000RN000000010000EA P0000000000000014390020090901 TTAIL0000000003000000 FTAIL00000000040000000002 Note... (4 Replies)
Discussion started by: bittoo
4 Replies

10. Shell Programming and Scripting

Replace 9-16 positions of a text file.

Hi i am having text file like this 40000201040005200213072009000000700000050744820906904421 40069300240005200713072009000000067400098543630000920442 i want to replace 9-16 positions of my txt file...by 1234567...in a single line command i.e 0400052....should be replaced by... (2 Replies)
Discussion started by: suryanarayana
2 Replies
Login or Register to Ask a Question