string - 删除属于其他行的子串的行

标签 string perl awk sed substring

如何删除文件中其他行的子字符串,同时保留包含它们的较长字符串?

我有一个文件,其中包含肽序列作为字符串 - 每行一个序列字符串。我想保留包含所有序列的字符串并删除文件中其他行的子字符串的所有行。

输入:

GSAAQQYW
ATFYGGSDASGT
GSAAQQYWTPANATFYGGSDASGT
GSAAQQYWTPANATF
ATFYGGSDASGT
NYARTTCRRTG
IVPVNYARTTCRRTGGIRFTITGHDYFDN
RFTITGHDYFDN
IVPVNYARTTCRRTG
ARTTCRRTGGIRFTITG

预期输出:

GSAAQQYWTPANATFYGGSDASGT
IVPVNYARTTCRRTGGIRFTITGHDYFDN

输出应仅保留最长的字符串并删除属于最长字符串的子字符串的所有行。因此,在上面的输入中,第 1、2、4 和 5 行是第 3 行的子字符串,因此输出保留第 3 行。类似地,对于第 6、8、9 和 10 行上的字符串,它们都是第 7 行的子字符串,因此行7 被保留并写入输出。

最佳答案

也许:

input=./input_file
while read -r str
do
[[ $(grep -c "$str" "$input") == 1 ]] && echo $str
done < "$input"

产生:

GSAAQQYWTPANATFYGGSDASGT
IVPVNYARTTCRRTGGIRFTITGHDYFDN

它很慢 - 但很简单..

关于string - 删除属于其他行的子串的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35566642/

相关文章:

javascript - 在 JavaScript 中解析一个整数(并且*仅*一个整数)

perl - 使用包时全局使用工具位置

perl - 使用 Perl 和 GD 调整 PNG 大小时如何保持透明度

bash - 如果第 2 列字段有多个值,则格式化输出

awk - 迭代时多列文件的gnuplot操作

javascript - 如何在 onClick 处理程序中转义 JavaScript 代码中的字符串?

python - 格式化字符串以 Python 方式使用 .format 进行 MySQL 查询

bash - 给定一个 logfile.txt,我只想提取 java 脚本名称;例如使用 bash 脚本的 filename.js

python - 在 Scrapy 中从数字中去除逗号

perl - 如何使用 perl 在路径中查找公共(public)部分?