我有一个这样的桌子
bedGraph chrom=chr1 chr1:0-000
1000 0
2000 0
3000 0.003802
4000 0.046175
bedGraph chrom=chr2 chr2:5000-6000
5000 0.103756
6000 0.161337
EXPECTED RESULTS
bedGraph chrom=chr1 rep
1000 0
2000 0
3000 0.003802
4000 0.046175
bedGraph chrom=chr2 rep
5000 0.103756
6000 0.161337
,我只想重命名第三个列(第二个列沿文件更改)。可以使用sed
来做到这一点吗?
谢谢!
答案 0 :(得分:2)
对于给定的示例,此单线工作:
awk 'NF==3{$3="rep"}7' file
答案 1 :(得分:1)
sed '/bedGraph/s/chr[12]:.*/rep/'
对于包含badGraph
的行,用chr[1 or 2]:<anything>
代替rep
。
sed 's/^\([[:space:]]*[^[:space:]]\+[[:space:]]\+[[:space:]]\+[^[:space:]]\+[[:space:]]\+\)[^[:space:]]\+$/\1 rep/'
过滤并记住[[:space:]]*[^[:space:]]\+[[:space:]]\+[[:space:]]\+[^[:space:]]\+[[:space:]]\+
行中的前两个单词,这在贝斯语中是<spaces or nothing><not spaces><spaces><not spaces><spaces>
,然后用[^[:space:]]\+
过滤掉第三个单词并打印前两个单词(即第一个单词)匹配),并用代表替换第三列。