Change the text in 2nd column in file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Change the text in 2nd column in file
# 1  
Old 12-03-2012
Change the text in 2nd column in file

Legends,

I have following entries in a file.
I want to toggle the entry of 2nd column. TRUE/FALSE
i tried using
Code:
perl -p -i -e

but the problem is, if instead of "tab" space after 1st column, there is a character or multi character space then this won't work.

Code:
perl -p -i -e "s/$i.xxx.out.remoteOn           TRUE/$i.xxx.out.remoteOn           FALSE/g" /tmp/file_a

Entries in the below file is like:

Code:
abc.xxx.out.remoteOn           TRUE                               write
def.xxx.out.remoteOn           TRUE                               write
ghi.xxx.out.remoteOn           TRUE                               write
jkl.xxx.out.remoteOn           TRUE                               write

Pls help, if i can use any other editor "sed", "awk" etc.(but i am not too familiar with these)

Regards
# 2  
Old 12-03-2012
Try this...

only problem is with OFS..

Code:
$ cat file
abc.xxx.out.remoteOn           TRUE                               write
def.xxx.out.remoteOn           TRUE                               write
ghi.xxx.out.remoteOn           FALSE                               write
jkl.xxx.out.remoteOn           TRUE                               write

$ awk '{if($0 ~ /FALSE/){$2="TRUE"}else if($0 ~ /TRUE/){$2="FALSE"}}1' OFS="\t" file
abc.xxx.out.remoteOn    FALSE   write
def.xxx.out.remoteOn    FALSE   write
ghi.xxx.out.remoteOn    TRUE    write
jkl.xxx.out.remoteOn    FALSE   write

This User Gave Thanks to pamu For This Post:
# 3  
Old 12-03-2012
Quote:
Originally Posted by pamu
Try this...

only problem is with OFS..

Code:
$ cat file
abc.xxx.out.remoteOn           TRUE                               write
def.xxx.out.remoteOn           TRUE                               write
ghi.xxx.out.remoteOn           FALSE                               write
jkl.xxx.out.remoteOn           TRUE                               write

$ awk '{if($0 ~ /FALSE/){$2="TRUE"}else if($0 ~ /TRUE/){$2="FALSE"}}1' OFS="\t" file
abc.xxx.out.remoteOn    FALSE   write
def.xxx.out.remoteOn    FALSE   write
ghi.xxx.out.remoteOn    TRUE    write
jkl.xxx.out.remoteOn    FALSE   write


Thanks Pamu, but it has changed the file format. after change, now only one tab space. while there are around 3 tab spaces before 3rd col and 2 tabs before 2nd col.
# 4  
Old 12-03-2012
Quote:
Originally Posted by sdosanjh
after change, now only one tab space. while there are around 3 tab spaces before 3rd col and 2 tabs before 2nd col.
If you know the spacings then just add spacings also...
Use
Code:
awk '{if($0~/FALSE/){print $1"\t\tTRUE\t\t\t"$3}else if($0~/TRUE/){print $1"\t\tFALSE\t\t\t"$3}else{print}}' file

This User Gave Thanks to pamu For This Post:
# 5  
Old 12-03-2012
This depends on the No. of <TAB>s you specified and on the fact that $4 will always contain either logical value:
Code:
awk 'BEGIN{OFS=FS="\t"}
     {$4=$4=="TRUE"?"FALSE":"TRUE"}
     1
    '  file

This User Gave Thanks to RudiC For This Post:
# 6  
Old 12-03-2012
Thanks Pamu and Rudic, both code worked.

---------- Post updated at 03:23 AM ---------- Previous update was at 03:07 AM ----------

Quote:
Originally Posted by pamu
If you know the spacings then just add spacings also...
Use
Code:
awk '{if($0~/FALSE/){print $1"\t\tTRUE\t\t\t"$3}else if($0~/TRUE/){print $1"\t\tFALSE\t\t\t"$3}else{print}}' file

It worked, but another problem arose is:

It is a huge file and i do not want to toggle entire file entries.
I tried below for loop with your code, but that didnt work out

Code:
For i in abc def jhi
do
awk '{if($0~/FALSE/){print $1"\t\tTRUE\t\t\t"$3}else if($0~/TRUE/){print $1"\t\tFALSE\t\t\t"$3}else{print}}' file
done

# 7  
Old 12-03-2012
try
Code:
awk 'BEGIN{OFS=FS="\t"}
     /abc|def|ghi/ {$4=$4=="TRUE"?"FALSE":"TRUE"}
     1
    '  file

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Compare 1st column from 2 file and if match print line from 1st file and append column 7 from 2nd

hi I have 2 file with more than 10 columns for both 1st file apple,0,0,0...... orange,1,2,3..... mango,2,4,5..... 2nd file apple,2,3,4,5,6,7... orange,2,3,4,5,6,8... watermerlon,2,3,4,5,6,abc... mango,5,6,7,4,6,def.... (1 Reply)
Discussion started by: tententen
1 Replies

2. Shell Programming and Scripting

Datestamp format 2nd change in csv file (awk or sed)

I have a csv file formatted like this: 2014-08-21 18:06:26,A,B,12345,123,C,1232,26/08/14 18:07and I'm trying to change it to MM/DD/YYYY HH:MM for both occurances. I have got this: awk -F, 'NR <=1 {print;next}{"date +%d/%m/%Y\" \"%H:%m -d\""$1 "\""| getline dte;$1=dte}1' OFS="," test.csvThis... (6 Replies)
Discussion started by: say170
6 Replies

3. Shell Programming and Scripting

Replace 2nd column in file

I have following entries file abc.txt abc83.out.remote TRUE abc84.out.remote TRUE abc85.out.remote TRUE abc86.out.remote TRUE Please help me, how do i toggle the entries listed in 2nd column based on the search patterns (abcxx) abcxx, i can get... (14 Replies)
Discussion started by: sdosanjh
14 Replies

4. Shell Programming and Scripting

Change file content 4 column to one Column using script

Hi Gurus, I have file content sample: ,5113955056,,TAgent-Suspend ,5119418233,,TAgent-Suspend ,5102119078,,TAgent-Suspend filenames 120229H5_suspend, 120229H6_unsuspend I receive those files one of directory /home/temp/ I need following: 1. Backup first /home/temp/ file to... (5 Replies)
Discussion started by: thepurple
5 Replies

5. Shell Programming and Scripting

Help i want to change the data of one file and apend it into 2nd file.

Hi All, Please help i have written an ksh script, where i am actually take count of lines in one file and want to update this count to 2nd field of a new file and apend the this into an existing file. Note the below script is in for loop -------- I am apending few records in a file... (7 Replies)
Discussion started by: iamnoone
7 Replies

6. UNIX for Dummies Questions & Answers

Replacing a specific column of a text file with another column

Hi, I have a text file in the following format: Code: 13412 NA06985 0 0 2 46.6432798439 4 4 4 4 13412 NA06991 NA06993 NA06985 2 48.8478948517 4 4 2 4 13412 NA06993 0 0 1 45.8022601455 4 4 2 4 13401 NA06994 0 0 1 48.780669145 4 4 4 4 13401 NA07000 0 0 2 47.7312017846 2 4 4 4 ... (2 Replies)
Discussion started by: evelibertine
2 Replies

7. Shell Programming and Scripting

comparing column of two different files and print the column from in order of 2nd file

Hi friends, My file is like: Second file is : I need to print the rows present in file one, but in order present in second file....I used while read gh;do awk ' $1=="' $gh'" {print >> FILENAME"output"} ' cat listoffirstfile done < secondfile but the output I am... (14 Replies)
Discussion started by: CAch
14 Replies

8. UNIX for Dummies Questions & Answers

Replacing a specific column of a text file with another column

I have a text file in the following format: 13412 NA06985 0 0 2 46.6432798439 4 4 4 4 13412 NA06991 NA06993 NA06985 2 48.8478948517 4 4 2 4 13412 NA06993 0 0 1 45.8022601455 4 4 2 4 13401 NA06994 0 0 1 48.780669145 4 4 4 4 13401 NA07000 0 0 2 47.7312017846 2 4 4 4 13402 NA07019... (3 Replies)
Discussion started by: evelibertine
3 Replies

9. Shell Programming and Scripting

Writing out 2nd column into one file from multiple files

I have several files that are being generated every 20 minutes. Each file contains 2 columns. The 1st column is Text, 2nd column is Data. I would like to generate one single file from all these files as follows: One instance of 1st column Text, followed by 2nd column Data separated by... (5 Replies)
Discussion started by: subhap
5 Replies

10. Shell Programming and Scripting

Need to insert new text and change existing text in a file using SED

Hi all, I need to insert new text and change existing text in a file. For that I used the below line in the command line and got the expected output. sed '$a\ hi... ' shell > shell1 But I face problem when using the same in script. It is throwing the error as, sed: command garbled:... (4 Replies)
Discussion started by: iamgeethuj
4 Replies
Login or Register to Ask a Question