Add string to a column of a file and retain the rest
2
0
Entering edit mode
5.5 years ago

Hi, I have a file with multiple rows which look like

1101:4422:200A   gi|12345|ref|NC_021085.1|   100     N/A     bacterium AC A78261

I want to add /1 after the first column and keep all the other columns intact. so that the output looks like

1101:4422:200A/1   gi|12345|ref|NC_021085.1|   100     N/A     bacterium AC A78261

I tried using awk. awk '{$1 = $1"/1"; print}' file > output though it gives me the additional "/1" , the output file does not retain the same delimiters as the input. The input file has multiple spaces as a delimiter and does not have tab or single space. Is there any other way to do this ? Thanks in advance.

linux awk • 918 views
ADD COMMENT
0
Entering edit mode

try this:

$ sed 's/\s/\/1 /' test.txt 
1101:4422:200A/1   gi|12345|ref|NC_021085.1|   100     N/A     bacterium AC A78261
ADD REPLY
0
Entering edit mode

Thanks for your reply but this joined the first and second column into 1.

ADD REPLY
0
Entering edit mode
5.5 years ago
sed 's/\([\t ]\)/\/1\1/' file > output
ADD COMMENT
0
Entering edit mode

Thanks for your reply. But this added the \t between column 1 and 2 but did not add "\1"

ADD REPLY
0
Entering edit mode
5.5 years ago

I think I answered my own question. It works when I use awk as given below:

awk -v FS="\t" -v OFS="\t" '{print $1"/1",$2,$3,$4,$5,$6} inputfile.txt > output.txt
ADD COMMENT

Login before adding your answer.

Traffic: 1967 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6