Question about awk scripting


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Question about awk scripting
# 1  
Old 05-18-2014
Question about awk scripting

Input file :

Code:
12345|12345|12345|12345
 12345|12345|12|13|12345
 12345|12345|1|234|12345
 12345|12345|12345|12345

Output :

Code:
12345|12345|12345|12345
 12345|12345|12 13|12345
 12345|12345|1 234|12345
 12345|12345|12345|12345

Change is : If the string 13 to 17 contains any | symbol then it needs to change it to " " (SPACE). I have tried the below and confused.

Code:
cat testfile | awk ' { sub(/\|/," ",substr($0,13,17) ; print $0 } '

Error : The third parameter in the sub is unchangeable.

Could anyone please advise , how to change this using awk or something..

Your advise would be great help for me.

Thanks,
Nanthu.

Last edited by bartus11; 05-18-2014 at 01:44 PM.. Reason: Please use [code][/code] tags.
# 2  
Old 05-18-2014
So the fields that does not require substitution (pipe to blank space) will have length >= 5?
# 3  
Old 05-18-2014
My Response

Hi,

The data from position 25 to 30 should not contain | as | is the delimiter. Hence the if the position 25 to 30 contain |, we just want to replace it with SPACE.

I hope that I am clear.

Regards,
Nandy.
# 4  
Old 05-18-2014
Hi, try:
Code:
awk '{print $1,$2,(NF>4)?$3" "$4:$3,$NF}' FS=\| OFS=\| file



----
Quote:
Originally Posted by Bobby_2000
Hi, ...
Please start a new thread for this

Last edited by Scrutinizer; 05-18-2014 at 04:47 PM..
# 5  
Old 05-18-2014
My Response

Hi,

Agree but I do not want to print it rather I want to get update in the file. I meant file content should be changed as desired.

Please assist and Thanks indeed for your quick responses.

Regards,
Nandy.
# 6  
Old 05-18-2014
Try redirecting it to a new file
Code:
awk '{print $1,$2,(NF>4)?$3" "$4:$3,$NF}' FS=\| OFS=\| file > newfile


--
and if successful you could try replacing the old file with the modified version...
Code:
awk '{print $1,$2,(NF>4)?$3" "$4:$3,$NF}' FS=\| OFS=\| file > newfile && mv newfile file

# 7  
Old 05-19-2014
Code:
 
awk '{FIELDWIDTHS = "12 5 100"} {gsub(/\|/, " ", $2)}1' file > file.tmp && mv file.tmp file

---------- Post updated at 02:28 AM ---------- Previous update was at 02:26 AM ----------

for 25 to 30,
Code:
awk '{FIELDWIDTHS = "24 6 100"} {gsub(/\|/, " ", $2)}1' file > file.tmp && mv file.tmp file

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Scripting question

hi all, I am writing a script and beginner in shell scripting. I have tried the below script. could you please check and let me know whether the below scirpt is correct. Unix details : HP Unix Input file. cat input.txt | tail -4 HTS40002.W1978.PROM HTS40003.W1978.PROM... (17 Replies)
Discussion started by: arun888
17 Replies

2. Shell Programming and Scripting

Scripting question

Hi I am trying to write a small script which takes one by one file name from a txt file and do a 'll' and need to check if equal to the given month, otherwise it should return back the file name. Note: the file name contains parameter. My code is given below: It is not working .. giving error... (6 Replies)
Discussion started by: Ravindra Swan
6 Replies

3. Shell Programming and Scripting

Scripting question

Preview of command prompt f ---> to start ferret q----> to stop ferret asp@nex:~$ f NOAA/PMEL TMAP FERRET v6.82 Linux 2.6.18-308.8.2.el5PAE 32-bit - 08/03/12 3-Dec-12 16:44 yes? go my.jnl yes?column=4/skip=1/type=num,text ............filename.txt ---... (4 Replies)
Discussion started by: nex_asp
4 Replies

4. Shell Programming and Scripting

scripting/awk help : awk sum output is not comming in regular format. Pls advise.

Hi Experts, I am adding a column of numbers with awk , however not getting correct output: # awk '{sum+=$1} END {print sum}' datafile 2.15291e+06 How can I getthe output like : 2152910 Thank you.. # awk '{sum+=$1} END {print sum}' datafile 2.15079e+06 (3 Replies)
Discussion started by: rveri
3 Replies

5. UNIX for Dummies Questions & Answers

Scripting question

folks; I have a script to remove any files that older than 14 days then move any files that younger than 7 days to another directory. but for some reason it doesn't move the files, when i do it manually it works but not through the script. i tried 2 different ways in writing the move part but it... (6 Replies)
Discussion started by: Katkota
6 Replies

6. Shell Programming and Scripting

Scripting question

Folks; I'm writing a shell script to extract some fields out of a log file & it will run periodically, how can i make it runs starting from where it left of. for example; if the script will do the extract every 2 days, let's say the first run will extract fields until July 25, 2007 @ 11:15:22... (1 Reply)
Discussion started by: moe2266
1 Replies

7. Solaris

Scripting question

I'm writing a small script that will run an executable program (sort of like TOP). To exit the executable, you have to enter control C (^c). I'm trying to use a redirect input file to send the ^c but I'm not having any luck. My short script looks like this - /mydirectory/abc.script < abc.in >... (1 Reply)
Discussion started by: gonzotonka
1 Replies

8. Shell Programming and Scripting

scripting question

I'm new to shell scripting and am having a problem trying to do something in C shell. I want to write a script that will input something instead of a user doing it. For example, using the command 'write' the user is supposed to type something to be sent to another user. I want a script to be able... (3 Replies)
Discussion started by: batmike
3 Replies

9. Shell Programming and Scripting

another scripting question

Hello I am working on cleaning up permissions on Oracle mountpoints and datafiles in unix. I am looking for a script or a scripting idea to 1st. 1. grep for owner oracle 2. ensure its a directory owned for oracle 3. chmod 750 on the oracle owned directory. 4. grep for oracle files, etc... (3 Replies)
Discussion started by: jigarlakhani
3 Replies

10. UNIX for Dummies Questions & Answers

another scripting question

I am writing a script that will identify the oldest file in a directory. Here's the syntax: #!/bin/ksh cd directory chmod 777 * ls -r -1t > file1 sed -n -e "1P" < file1 > file2 So my problem is, now I have file2, which contains the name of the oldest file in the directory. How do I use,... (1 Reply)
Discussion started by: kristy
1 Replies
Login or Register to Ask a Question