我的标题以“>”开头,我想通过保留第一个单词并删除 output.txt 中显示的其他单词来修复标题并打印它
输入.txt
>AGAJ01065549.1 scaffold:Xipmac4.4.2:AGAJ01065549.1:1:500:1 REF
CGCCAGGTGTCTGGCGTAATAGCGCCAGCGCCAGGTGTCATATACGTAATAGCGCCAGGT
>RGAMMT01065456.1 scaffold:Xipmac4.4.2:AGAJ01065595.1:1:500:1 REF
GACTAGTTTTTACATATAGTAATGGTTATTCGGAAGTGTACAGACGTTTTCAGGTTTTTT
TTTGGTAGGGGTTGAGGTGTTGAGGTGAGGGGACTATGTGGAGGGAACTTTCCATAGAGG
输出.txt
>AGAJ01065549.1
CGCCAGGTGTCTGGCGTAATAGCGCCAGCGCCAGGTGTCATATACGTAATAGCGCCAGGT
>RGAMMT01065456.1
GACTAGTTTTTACATATAGTAATGGTTATTCGGAAGTGTACAGACGTTTTCAGGTTTTTT
TTTGGTAGGGGTTGAGGTGTTGAGGTGAGGGGACTATGTGGAGGGAACTTTCCATAGAGG
答案1
这可能对你有用(GNU sed):
sed -i '/^>/s/\s.*//' file
答案2
您可以通过 awk 管道传输文本来完成此操作
awk '{print $1}' input.txt
这将打印出每行的第一个条目(条目之间用空格分隔)。
答案3
类似于回答使用awk
是cut
:
cut -d' ' -f 1 input.txt > output.txt
该-d
选项将分隔符设置为一个空格并-f
选择第一个字段。
但是您也可以使用sed
:
sed 's,^\([^ ]\+\) .*,\1,' input.txt > output.txt
该命令替换一个表达式。它查找行的开头并将每个字符复制到不是空白的缓冲区中。此外,它匹配空格和任何其他字符。sed
将这一行替换为缓冲区内容。