This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Add string to a column of a file and retain the rest

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

try this:

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

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

2 answers

sed 's/\([\t ]\)/\/1\1/' file > output

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

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

Log in to answer this question.