Como não tenho certeza se você quer tanto um código perl
, aqui está um código awk
semelhante:
awk -F';' -v OFS=';' '{ $NF=""; print }' data.csv
= > Este código esvazia o último campo de cada linha ( $NF=""
). Campos de entrada ( -F\;
) e campos de saída ( OFS=';'
) são ditos separados por ";".
O mesmo com sed
:
sed 's/[^;]*$//' data.csv
= > Isso substitui ( s/.../.../
) a sequência mais longa de caracteres que não é ";" ( [^;]*
) no final da linha ( $
) sem nada.
O mesmo com grep
:
grep -o '.*;' data.csv
= > As expressões regulares grep
são gananciosas por padrão, o que significa que elas correspondem à sequência mais longa possível. Aqui .*;
significa "a sequência mais longa de caracteres que termina com um"; ". A opção -o
mostra o que é correspondido em vez da linha inteira.
Finalmente, um perl
equivalente seria (graças a @steeldriver):
perl -F';' -lpe '$F[-1]=""; $_ = join ";", @F' data.csv
= > Ele funciona de forma semelhante a awk
, sendo a junção explícita aqui.