我想在表格文件中替换完全匹配的字符串。我的文件有点像这样
I 1 10 100
II 2 20 200
III 3 30 300
IX 9 100 1000
我想把这样的文件放到
chrI 1 10 100
chrII 2 20 200
chrIII 3 30 300
chrIX 9 100 1000
我已尝试 sed 命令但没有成功
sed -i -e 's/"III"/chrIII/g' -e 's/"II"/chrII/g' -e 's/"I"/chrI/g' filename
请找出错误。该文件有大内存占用可以用于相同的?
答案 0 :(得分:2)
sed 方法
sed -E -i -e 's/\b(I|II|III|IX)\b/chr\1/g' input
DEMO OUTPUT:
~$ sed -e 's/\b\(I\|II\|III\|IX\)\b/chr\1/g' input
chrI 1 10 100
chrII 2 20 200
chrIII 3 30 300
chrIX 9 100 1000
答案 1 :(得分:1)
posix版本(无|
,\b
)
sed -e 's/^I{1,3}[[:blank:]]/chr&/' -e 's/^IX[[:blank:]]/chr&/' input > output
中的
sed -i -e 's/"III"/chrIII/g' -e 's/"II"/chrII/g' -e 's/"I"/chrI/g' filename
"III"
搜索"III"
而不是III
I
如果没有分隔,也会找到II
(此处^
开始+ [[:blank:]]
之后答案 2 :(得分:0)
awk 方法:
awk '$1~/^[IXV]*$/{$1="chr"$1}1' OFS='\t' file > tmp && mv tmp file
修改后的 file
内容:
chrI 1 10 100
chrII 2 20 200
chrIII 3 30 300
chrIX 9 100 1000
$1="chr"$1
- 在每个第一个字段前加上chr
子字符串
答案 3 :(得分:0)
将“chr”放在第一列的前面。 无论哪种方式都适用于以下示例。
awk '{print "chr"$0}' file
awk '{$1="chr"$1}1' file
chrI 1 10 100
chrII 2 20 200
chrIII 3 30 300
chrIX 9 100 1000