С помощью perl
:
perl -F'\t' -e 'map {s/(.+);$1/$1/} @F; print join("\t",@F)'
В отличие от решения sed
, здесь каждое поле обрабатывается отдельно, что предотвращает возможность обнаружения и удаления дубликатов полей (например. например, foo;
- TAB и второй foo
удаляются решением sed
, но не этим решением perl
). В зависимости от ваших входных данных, это, вероятно, не является проблемой в реальном использовании.
Следующая версия позволяет избавиться от нескольких дубликатов в поле (например. a;b;a;b;a;b
--> a;b
):
perl -F'\t' -e 'map {while(/(.+);$1/) {s/(.+);$1/$1/g}} @F;print join("\t",@F)'
ПРИМЕЧАНИЕ: здесь предполагается последняя версия perl
, где -F
подразумевает -a
и -n
. Если у вас более старая версия, используйте perl -F'\t' -ane '...'
Вы должны установить Java в своей системе, сделайте это с помощью:
sudo apt install default-jre