Como posso usar uma barra tripla como um delimitador com corte?

1

Eu tenho uma tabela em que cada entrada se parece com algo,

coagulation factor VIII-associated 1 /// coagulation factor VIII-associated 2 /// coagulation factor VIII-associated 3

Gostaria de usar cut -d/// -f2 myfile.txt , mas estou recebendo um erro:

cut: bad delimiter

Mesmo caso, quando uso aspas simples ou aspas duplas em torno do delimitador:

cut -d'///' -f2 myfile.txt

cut -d"///" -f2 myfile.txt

Eu tenho que escapar da barra de alguma forma? Em caso afirmativo, qual é o caractere de escape para o corte? A documentação não parece ter essa informação, e eu tentei \.

    
por Atticus29 13.06.2016 / 23:49

3 respostas

4

Se o delimitador for algo diferente de um caractere fixo , então cut é a ferramenta errada .

Use awk em vez disso.

Considere este arquivo de teste que possui três campos:

$ cat file
one///two/2//two///three

Para imprimir o segundo campo e apenas o segundo campo:

$ awk -F/// '{print $2}' file
two/2//two
    
por 13.06.2016 / 23:58
3

As outras respostas estão corretas, mas há também a possibilidade de substituir seu delimitador atual para usar cut como você queria, como:

sed "s/\/\/\//\//g" myfile.txt | cut -d/ -f2
    
por 14.06.2016 / 00:07
2

Um delimitador com cut é sempre um único caractere, então você não pode especifique "///" como um delimitador.

Em vez disso, você usaria "/" como delimitador e contaria os campos extras:

cut -d/ -f4 myfile.txt

(os campos 2 e 3 são os campos vazios entre as barras em "///").

    
por 13.06.2016 / 23:51