我有以下文件:
ICR1 +
ICR1+1+3199 +
ICR1+2526+2828 +
IRT1 +
IRT1+1+1489 +
IRT1+713+937 +
LSR1 -
LSR1+1+1175 -
LSR1+366+638 -
NME1 +
NME1+1+340 +
NME1+2+118 +
PWR1 -
PWR1+1+941 -
PWR1+724+939 -
Q0017 -
Q0017+1+162 -
Q0020 -
Q0020+1370+1513 -
Q0020+1+440 -
第一列和第二列以制表符分隔。我确实需要具备以下条件:
ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -
我尝试将 awk 与字段分隔符“+”一起使用,但它也从第二列中删除了 +...
答案1
您可以将 awk 的字段分隔符设置为空格或+
,然后执行经典的基于关联数组的重复数据删除:
$ awk -F'[ \t+]' '!seen[$1]++' file
ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -
答案2
也许我误解了这个问题,但这似乎有效:
grep -v '+.' file
输出:
ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -
答案3
我通过使用sed
命令实现了相同的目标
sed -n '/^.\{1,5\} .$/p' filename
输出
ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -
答案4
使用磨坊主:
mlr --tsv --implicit-csv-header --headerless-csv-output \
put -S '$1=gsub($1,"[+].+$","")' then uniq -a inputfile
输出是:
ICR1 +
IRT1 +
LSR1 -
NME1 +
PWR1 -
Q0017 -
Q0020 -