Unix 剪下绳子的中间部分
这就是我的数据 正交组12213.faa.aligned.treefile.rooting.0.gtpruned.Reaginate.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 正交组12706.faa.aligned.treefile.rooting.0.gtpruned.Reaginate.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 我想以这样的内容结束(不使用.faa.aligned.treefile.rooting.0.gtpruned.reaginate.0): 正交组12213 0.0 0.0.0.0.0.0.0.0 0.0.0 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 0.0 0 正交组12706 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0Unix 剪下绳子的中间部分,unix,Unix,这就是我的数据 正交组12213.faa.aligned.treefile.rooting.0.gtpruned.Reaginate.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 正交组12706.faa.aligned.treefile.rooting.0.gtpruned.Reaginate.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
我尝试过各种“剪切”功能,但运气不佳。请帮忙 我会使用
sed
:
sed 's/\.[^ ]*//'
这意味着,“找到第一个点,以及它后面所有不是空格的字符,并将它们替换为零。”您的示例显示了两行同时包含
.faa.aligned.treefile.rooting.0.gtpruned.reaginate.0
。如果这是一个固定的字符串,并且第一部分始终是精确的15个位置,则可以使用剪切
:
# bad solution, only cut
cut -c1-15,68- file
这个解决方案可以被标记为糟糕。当起始字符串或中间部分的长度发生变化时,您将出现故障。
当您知道要删除的字符串以一个点开始,并且第一个空格是下一个切割点时,您可以使用
# also bad
sed 's/[.]/ /' file | cut -d" " -f1,3-
使用cut
保持简单很好,但是cut
需要简单的输入。首先,思考找到中间字符串的最佳方法是什么,并为此使用类似于
sed
或awk
的内容
# example with sed
str='.faa.aligned.treefile.rooting.0.gtpruned.rearrange.0'
sed 's/'$str'//' file
这对我有用!非常感谢您的详细解释:)@user10934304您可以接受我的答案,请参见