Replace a column with a value by ignoring the header lines


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace a column with a value by ignoring the header lines
# 1  
Old 03-25-2013
Replace a column with a value by ignoring the header lines

i have a file in the gz format , the content of the file is as follow.

gzcat f1.gz

# 1.name
# 2.location
# 3.age
# 4.dob
.
.
.
.
.
.
.
.
.
# 43.hobbies

< Aravind,33,chennai,09091980, , , , , , , surfing>
< Swapnil,32,bhopal,01121981, , , , , , , cricket>

i want to hide the DoB 4th column with ******* and any suggestion please.

Code:
gzcat f1.gz | nawk '{gsub("09091980","********",$5)}1' | more

by doing this i am able to do line by line only , how to do it at one shot , any suggestion please.

Is it possible to do without disturbing the first 45 lines where it indicates the description of the positions.

Last edited by aravindj80; 03-25-2013 at 07:47 AM..
# 2  
Old 03-25-2013
Code:
gzcat ANSIAC*.gz | nawk 'NR>45{sub(".{8}","********",$5)}1'

This User Gave Thanks to anbu23 For This Post:
# 3  
Old 03-25-2013
I guess anbu23 has missed out to specify the FS Smilie
# 4  
Old 03-25-2013
Thanks Anbu

Hello Thanks Anbu,

the f1.gz output is slightly modified , the script given by is working if there is no space after comma.

gzcat f1.gz | more

< Aravind, 33, chennai, 09091980, , , , , , , surfing>
< Swapnil, 32, bhopal, 01121981, , , , , , , cricket>

after comma there is space . how to modify the code for the same.

one more thing is it possible to recreate output with the same file name with changes in the code :-)

if yes please tell the same it would be of great help.

Last edited by aravindj80; 03-25-2013 at 08:06 AM..
# 5  
Old 03-25-2013
I guess, setting FS to , should help

Code:
gzcat ANSIAC*.gz | nawk -F"," 'NR>45{sub($3," ********",$3)}1' OFS=","

# 6  
Old 03-25-2013
Code:
$ cat file
< Aravind, 33, chennai, 09091980, , , , , , , surfing>
< Swapnil, 32, bhopal, 01121981, , , , , , , cricket>
$ awk '{sub(".{8}","********",$5)}1' file
< Aravind, 33, chennai, ********, , , , , , , surfing>
< Swapnil, 32, bhopal, ********, , , , , , , cricket>

Code:
$ cat file
< Aravind,33,chennai,09091980, , , , , , , surfing>
< Swapnil,32,bhopal,01121981, , , , , , , cricket>
$ awk -F"," -v OFS="," '{sub(".{8}","********",$4)}1' file
< Aravind,33,chennai,********, , , , , , , surfing>
< Swapnil,32,bhopal,********, , , , , , , cricket>

Redirect the output of awk to same file and then gzip it.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Find header in a text file and prepend it to all lines until another header is found

I've been struggling with this one for quite a while and cannot seem to find a solution for this find/replace scenario. Perhaps I'm getting rusty. I have a file that contains a number of metrics (exactly 3 fields per line) from a few appliances that are collected in parallel. To identify the... (3 Replies)
Discussion started by: verdepollo
3 Replies

2. UNIX for Beginners Questions & Answers

awk script to extract a column, replace one of the header and replace year(from ddmmyy to yyyy)

I have a csv which has lot of columns . I was looking for an awk script which would extract a column twice. for the first occurance the header and data needs to be intact but for the second occurance i want to replace the header name since it a duplicate and extract year value which is in ddmmyy... (10 Replies)
Discussion started by: Kunalcurious
10 Replies

3. Shell Programming and Scripting

Sum of a column as new column based on header in a script

Hello, I am trying to store sum of a column as a new column inside a file but have to find the column names dynamically I/p c1,c2,c3,c4,c5 10,20,30,40,50 20,30,40,50,60 If i want to find sum only column c1, c3 and output it as c6,c7 O/p c1,c2,c3,c4,c5,c6,c7 10,20,30,40,50,30,70... (6 Replies)
Discussion started by: mkathi
6 Replies

4. Shell Programming and Scripting

Add column header and row header

Hi, I have an input like this 1 2 3 4 2 3 4 5 4 5 6 7 I would like to count the no. of columns and print a header with a prefix "Col". I would also like to count the no. of rows and print as first column with each line number with a prefix "Row" So, my output would be ... (2 Replies)
Discussion started by: jacobs.smith
2 Replies

5. UNIX for Dummies Questions & Answers

Merge all csv files in one folder considering only 1 header row and ignoring header of all others

Friends, I need help with the following in UNIX. Merge all csv files in one folder considering only 1 header row and ignoring header of all other files. FYI - All files are in same format and contains same headers. Thank you (4 Replies)
Discussion started by: Shiny_Roy
4 Replies

6. UNIX for Dummies Questions & Answers

Rename a header column by adding another column entry to the header column name

Hi All, I have a file example.csv which looks like this GrpID,TargetID,Signal,Avg_Num CSCH74_1_1,2007,61,256 CSCH74_1_1,212007,647,679 CSCH74_1_1,12007,3,32 CSCH74_1_1,207,299,777 I want the output as GrpID,TragetID,Signal-CSCH74_1_1,Avg_Num CSCH74_1_1,2007,61,256... (1 Reply)
Discussion started by: Vavad
1 Replies

7. Shell Programming and Scripting

Rename a header column by adding another column entry to the header column name URGENT!!

Hi All, I have a file example.csv which looks like this GrpID,TargetID,Signal,Avg_Num CSCH74_1_1,2007,61,256 CSCH74_1_1,212007,647,679 CSCH74_1_1,12007,3,32 CSCH74_1_1,207,299,777 I want the output as GrpID,TragetID,Signal-CSCH74_1_1,Avg_Num CSCH74_1_1,2007,61,256... (4 Replies)
Discussion started by: Vavad
4 Replies

8. UNIX for Dummies Questions & Answers

deleteing duplicate lines sing uniq while ignoring a column

I have a data set that has 4 columns, I want to know if I can delete duplicate lines while ignoring one of the columns, for example 10 chr1 ASF 30 15 chr1 ASF 20 5 chr1 ASF 30 6 chr2 EBC 15 4 chr2 EBC 30 ... I want to know if I can delete duplicate lines while ignoring column 1, so the... (5 Replies)
Discussion started by: japaneseguitars
5 Replies

9. Shell Programming and Scripting

awk/sed column replace using column header - help

$ cat log.txt Name Age Sex Lcation nfld alias xsd CC 25 M XYZ asx KK Y BB 21 F XAS awe SS N SD 21 M AQW rty SD A How can I replace the column with header "Lcation" with the column with header "alias" and delete the "alias" column? so that the final output will become: Name Age Sex... (10 Replies)
Discussion started by: jkl_jkl
10 Replies

10. UNIX for Dummies Questions & Answers

How to count lines - ignoring blank lines and commented lines

What is the command to count lines in a files, but ignore blank lines and commented lines? I have a file with 4 sections in it, and I want each section to be counted, not including the blank lines and comments... and then totalled at the end. Here is an example of what I would like my... (6 Replies)
Discussion started by: kthatch
6 Replies
Login or Register to Ask a Question