Remove as 2 primeiras colunas da primeira linha de um arquivo

0

Estou procurando um comando para remover as duas primeiras colunas da primeira linha de um arquivo. O delimitador para as colunas é um pipe. O número de colunas varia.

só precisamos remover as duas primeiras colunas. amostra abaixo.

entrada: col1 | col2 | col3 | col4

saída col3 | col4

    
por user116306 21.05.2015 / 19:29

4 respostas

1

Provavelmente o comando mais simples é

sed '1s/^[^|]*|[^|]*|//g' input > output

Este comando sed irá apenas na linha 1 fazer a substituição.

Para esta entrada:

foo|bar|baz|doo|bee|doo
123|456
789|101|112

produzirá essa saída:

baz|doo|bee|doo
123|456
789|101|112
    
por 22.05.2015 / 08:49
0

experimente este comando

head -2 inputFile.txt | cut -d "|" -f 3- > outputFile.txt
    
por 21.05.2015 / 20:14
0

O comando cut deve fazer o trabalho se eu acho que você está se referindo.

echo "foo|bar|baz" | cut -d"|" -f3

Então, se você quiser apenas editar a primeira linha, use o comando head também.

head -n1 filename | cut -d"|" -f3

Você também pode usar o sed para fazer o trabalho.

head -n1 filename | sed 's/^.*|.*|//g'
    
por 21.05.2015 / 20:16
0

Isso cortará os dois primeiros campos delimitados por canal da linha 1 e copiará o restante do arquivo (linha 2 em diante) sem alterações.

(head -n 1 input | cut -d '|' -f 3- ; tail -n +2 input) > output

Uma maneira um pouco mais eficiente, mas sintaticamente mais difícil de fazer, é:

{ head -n 1 input | cut -d '|' -f 3- ; tail -n +2 input; } > output
    
por 21.05.2015 / 21:18