我有一个字符串
ATOM 2448 N LEU 301 -6.821 36.580 65.884 1.00 19.70 O
在这里,我需要用NHE替换第三列中的任何术语(总是等于树大写字母)。
我尝试使用
sed-e 's/[[:upper:]][[:upper:]][[:upper:]]/NHE/g'
但它也取代了第一栏中的世界
NHEM 2448 N NHE 301 -6.821 36.580 65.884 1.00 19.70 O
如何让sed只替换只包含3个字母(不超过3个)的单词?
谢谢!
答案 0 :(得分:0)
这可能适合你(GNU sed):
sed 's/\S\+/NHE/4' file
将第4个非空列替换为NHE
替代方案:
sed 's/\S\S*/NHE/4' file
答案 1 :(得分:0)
sed -r 's/(([^[:blank:]]+[[:blank:]]+){3})\<[[:upper:]]{3}\>/\1NHE/' file
ATOM 2448 N NHE 301 -6.821 36.580 65.884 1.00 19.70 O
有些系统需要-E
而不是-r
使用GNU sed,您可以指定替换哪个匹配。在这里,您想要替换第4个以空格分隔的单词:
sed -r 's/[^[:blank:]]+/NHE/4' file