![我想替换文件中的文本](https://linux22.com/image/169955/%E6%88%91%E6%83%B3%E6%9B%BF%E6%8D%A2%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%96%87%E6%9C%AC.png)
我的文件如下所示:
NODE_13_length_50291_cov_8.067223 GTTGCCTAATATCGCCAATCCAGCTCCT
NODE_25_length_22118_cov_8.258986 TATCGCCAATCCAGCTCCT
NODE_36_length_15273_cov_5.283743 TGCCTAATATCGCCAATCCAG
我想将其更改为:
NODE_13 GTTGCCTAATATCGCCAATCCAGCTCCT
NODE_25 TATCGCCAATCCAGCTCCT
NODE_36 TGCCTAATATCGCCAATCCAG
如果可能的话,我还想制作一个日志文件,如下所示:
NODE_13_length_50291_cov_8.067223 NODE_13
NODE_25_length_22118_cov_8.258986 NODE_25
NODE_36_length_15273_cov_5.283743 NODE_36
哪个命令适用于此?
非常感谢。
答案1
对于第一部分,您可以尝试以下操作:
sed 's/_length.*[[:blank:]]\([ACGT]*\)$/ \1/' file
输出:
NODE_13 GTTGCCTAATATCGCCAATCCAGCTCCT
NODE_24 TATCGCCAATCCAGCTCCT
NODE_36 TGCCTAATATCGCCAATCCAG
对于第二部分:
sed 's/\(^NODE_[0-9]*\)\(_.*\) [ACGT]*$/\1\2 \1/'
输出:
NODE_13_length_50291_cov_8.067223 NODE_13
NODE_24_length_22118_cov_8.258986 NODE_24
NODE_36_length_15273_cov_5.283743 NODE_36
答案2
GNU 中的一行代码awk
awk -v sp="_length_" 'BEGIN {FS=" |"sp }
{print $1, $3 > "output"; print $1sp$2, $1 > "log"}' file1
输出
cat output
NODE_13 GTTGCCTAATATCGCCAATCCAGCTCCT
NODE_25 TATCGCCAATCCAGCTCCT
NODE_36 TGCCTAATATCGCCAATCCAG
cat log
NODE_13_length_50291_cov_8.067223 NODE_13
NODE_25_length_22118_cov_8.258986 NODE_25
NODE_36_length_15273_cov_5.283743 NODE_36
答案3
第一的:
sed 's|_length.*[0-9]||g' file.txt
输出:
NODE_13 GTTGCCTAATATCGCCAATCCAGCTCCT
NODE_25 TATCGCCAATCCAGCTCCT
NODE_36 TGCCTAATATCGCCAATCCAG
第二:
awk '{print $1,substr ($1,1,7)}' log_file.txt
输出
NODE_13_length_50291_cov_8.067223 NODE_13
NODE_25_length_22118_cov_8.258986 NODE_25
NODE_36_length_15273_cov_5.283743 NODE_36
如果您想就地编辑文件:
sed -i 's|_length.*[0-9]||g' log_file.txt
awk -i inplace '{print $1,substr ($1,1,7)}' log_file.txt
要使用 执行此操作awk
,您需要拥有 4.2 或更高版本。
答案4
尝试使用下面的命令并且工作正常
先出1
awk '{print substr($1,1,7),$NF}' filename
output
NODE_13 GTTGCCTAATATCGCCAATCCAGCTCCT
NODE_25 TATCGCCAATCCAGCTCCT
NODE_36 TGCCTAATATCGCCAATCCAG
第二出局
awk '{print $1,substr($1,1,7)}' filename
输出
NODE_13_length_50291_cov_8.067223 NODE_13
NODE_25_length_22118_cov_8.258986 NODE_25
NODE_36_length_15273_cov_5.283743 NODE_36
蟒蛇方法
#!/usr/bin/python
k=open('q.txt','r')
for i in k:
j=i.split(' ')
print j[0][0:7],j[1].strip()
print "\n"
q=open('q.txt','r')
for i in q:
w=i.split(' ')
print w[0],w[0][0:7]
output
First output1
NODE_13 GTTGCCTAATATCGCCAATCCAGCTCCT
NODE_25 TATCGCCAATCCAGCTCCT
NODE_36 TGCCTAATATCGCCAATCCAG
Second output
NODE_13_length_50291_cov_8.067223 NODE_13
NODE_25_length_22118_cov_8.258986 NODE_25
NODE_36_length_15273_cov_5.283743 NODE_36