如何从“后”行中删除文本&引用;在awk?
我发现了一些类似问题的答案,作者希望删除字符串()中某个字符后的文本。我想做一件类似的事情,但是,我希望使用的字符是如何从“后”行中删除文本&引用;在awk?,awk,Awk,我发现了一些类似问题的答案,作者希望删除字符串()中某个字符后的文本。我想做一件类似的事情,但是,我希望使用的字符是”,特别是当出现三次时,例如“…”。每当我使用找到的命令时,所有字符都会被删除 输入文件示例:infle.txt: GCA_000260195.2_FO_II5_V1_genomic.fna_Candidate_Sequence_11158-16380_64... * GCA_000350365.1_Foc4_1.0_B2_genomic.fna_Candidate_Sequenc
”
,特别是当出现三次时,例如“…”
。每当我使用找到的命令时,所有字符都会被删除
输入文件示例:infle.txt:
GCA_000260195.2_FO_II5_V1_genomic.fna_Candidate_Sequence_11158-16380_64... *
GCA_000350365.1_Foc4_1.0_B2_genomic.fna_Candidate_Sequence_73046-78268_63... at 100.00%
GCA_001696625.1_C1HIR_9889_genomic.fna_Candidate_Sequence_338336-343558_32... at 100.00%
GCA_007994515.1_UK0001_genomic.fna_Candidate_Sequence_482256-487478_64... at 100.00%
GWHAASU00000000_FocTR4_58.genomic.fna_Candidate_Sequence_429502-434724_64... at 100.00%
示例命令1:awk-F'.''{print$1}'infle.txt
示例命令1的输出只是空白
我试过把这些字符放在“”中
这将产生以下输出:
GCA_000260195.2_FO_II5_V1_genomic.fna_Candidate_Sequence_11158-16380_64... *
GCA_000350365.1_Foc4_1.0_B2_genomic.fna_Candidate_Sequence_73046-78268_63... at 100.00%
GCA_001696625.1_C1HIR_9889_genomic.fna_Candidate_Sequence_338336-343558_32... at 100.00%
GCA_007994515.1_UK0001_genomic.fna_Candidate_Sequence_482256-487478_64... at 100.00%
GWHAASU00000000_FocTR4_58.genomic.fna_Candidate_Sequence_429502-434724_64... at 100.00%
理想情况下,我希望输出如下所示:
GCA_000260195.2_FO_II5_V1_genomic.fna_Candidate_Sequence_11158-16380_64
GCA_000350365.1_Foc4_1.0_B2_genomic.fna_Candidate_Sequence_73046-78268_63
GCA_001696625.1_C1HIR_9889_genomic.fna_Candidate_Sequence_338336-343558_32
GCA_007994515.1_UK0001_genomic.fna_Candidate_Sequence_482256-487478_64
GWHAASU00000000_FocTR4_58.genomic.fna_Candidate_Sequence_429502-434724_64
如何删除“…”之后的文本而不替换所有文本
谢谢,
Jamie你能试试下面的内容吗,你需要转义它来告诉
awk
把
当作一个文字字符
awk -F'\\.\\.\\.' '{print $1}' Input_file
或根据Sundeep先生的意见,使用:
awk -F'\\.{3}' '{print $1}' Input_file
更正OP的尝试:您也不需要将字段分隔符用作-F'“…”
我们这里不需要使用“
,而只使用-F'您的分隔符“
奖金解决方案:如果不想使用字段分隔符,请在此处使用sub
awk '{sub(/\.\.\..*/,"")} 1' Input_file
非常好,因为它展示了如何正确处理FS
中的正则表达式元字符
这里有一个替代的awk
,它不使用任何正则表达式,因此不需要任何转义:
awk '{print substr($0, 1, index($0, "...") - 1)}' file
也可以使用
-F'\\.{3}'
或-F'[.]{3}'
@RavinderSingh13,效果非常好-感谢您提供的详细解决方案
awk '{print substr($0, 1, index($0, "...") - 1)}' file
GCA_000260195.2_FO_II5_V1_genomic.fna_Candidate_Sequence_11158-16380_64
GCA_000350365.1_Foc4_1.0_B2_genomic.fna_Candidate_Sequence_73046-78268_63
GCA_001696625.1_C1HIR_9889_genomic.fna_Candidate_Sequence_338336-343558_32
GCA_007994515.1_UK0001_genomic.fna_Candidate_Sequence_482256-487478_64
GWHAASU00000000_FocTR4_58.genomic.fna_Candidate_Sequence_429502-434724_64