Você pode usar cut
: echo 1:2:3:4:5:6:7:8:9:10|cut -d: -f 2,6-
.
Eu tenho aproximadamente 7 colunas em cada linha, quero imprimir duas colunas específicas e as colunas restantes após a última especificada, por exemplo:
awk -F: {' print $2 ":" $6 '} a.txt
imprime as colunas 2 e 6 de a.txt
. Como eu iria então imprimir as colunas restantes depois de $ 6?
Então, um exemplo de entrada / saída seria:
column2:column6:column7:column8:column9...
Você pode usar cut
: echo 1:2:3:4:5:6:7:8:9:10|cut -d: -f 2,6-
.
Isso faz o que você deseja se precisar usar awk
:
$ awk 'BEGIN{FS=":"; OFS=":"}{$1=$3=$4=$5="";gsub("^"FS,"",$0);gsub(FS"+",FS,$0)}1' <your file>
BEGIN{FS=":"; OFS=":"}
. ""
. gsub
limpam as coisas removendo quaisquer dois pontos ( :
) que podem começar no início.
= O segundo gsub
remove quaisquer sequências de dois pontos ( :
) da sequência restante em $0
. 1
. perl -F: -pale '$"=":"; $_ = "@F[1,5..$#F]"' input-file.txt
awk -F: '
{
a = $2
for ( i = 6; i <= NF; ++i )
$(i-5) = $(i)
NF -= 5
print a, $0
}
' OFS=":" input-file.txt
sed -e '
s/^/:/;s/:/\n/6
h;s/.*\n//
x;s/\n.*//
s/$/:/
s/^://;s/:/\n/2
s/^/:/;s/:/\n/2
s/.*\n\(.*\)\n.*//
G;s/\n/:/
' input-file.txt