任何人都可以告诉我如何将chr
插入第一列中的每个字符。
档案
1 34566 34765
2 45678 45789
3 34567 34799
X 67895 66900
Y 34567 34890
归档
chr1 34566 34765
chr2 45678 45789
chr3 34567 34799
chrX 67895 66900
chrY 34567 34890
我无法弄清楚如何将sed -i
应用于特定列。我对语法不好,所以如果你能解释你的解释,我将不胜感激。另外,为此使用awk会更好吗?
答案 0 :(得分:16)
使用sed:
sed 's/^/chr/' file.in > file.out
您不需要-i
- 标记,因为您没有覆盖输入文件 file.in 。
使用awk:
awk '{print "chr"$0}' file.in > file.out
答案 1 :(得分:3)
sed 's|^|chr|' file_in > file_out
这会在每行(s
)的开头进行替换(^
)并将其替换为字符“chr”。管道(|
)只是分隔符。
答案 2 :(得分:1)
使用awk:
awk '{print "chr"$0}' file
将更改存储回文件:
awk '{print "chr"$0}' file > tmp && mv tmp file
答案 3 :(得分:0)
sed 's/^\s*/chr/'
只是在你反对之前没有空白区域。如果你喜欢,不需要那个
答案 4 :(得分:0)
awk '{print "chr"$0}'
适用于相关文件,因为没有字段分隔符。对于这种情况,您可以使用(例如,对于管道分隔文件):
awk 'BEGIN { FS = "|";OFS="|"} {$97="chr"$0;print}'
答案 5 :(得分:0)
$ cat file.in
1 34566 34765
2 45678 45789
3 34567 34799
X 67895 66900
Y 34567 34890
$ awk '$1="chr"$1 {print}' file.in
chr1 34566 34765
chr2 45678 45789
chr3 34567 34799
chrX 67895 66900
chrY 34567 34890
从本质上讲,无论第1列之前是否有空格,您都会将" chr" $ 1的值重定向回$ 1,并且仍打印出该行的其余部分。