tr ',' '\n'
substituiria todos os ,
s no seu arquivo de entrada por quebras de linha, parece que é o que você deseja.
Como remover a vírgula (,) entre duas palavras?
Como posso colocar essas duas palavras em duas linhas diferentes?
Esta é minha opinião:
ent0
ent4
ent1,ent5
ent2,ent6
ent3,ent7
ent29,ent30
tr ',' '\n'
substituiria todos os ,
s no seu arquivo de entrada por quebras de linha, parece que é o que você deseja.
Use tr
:
$ tr ',' '\n' < FILE
ent0
ent4
ent1
ent5
ent2
ent6
ent3
ent7
ent29
ent30
No caso de haver espaços ou outros caracteres em branco ao redor da solução de vírgula - sed :
sed 's/[[:blank:]]*,[[:blank:]]*/\
/g' file
Com algumas implementações de sed
, você pode substituir o \<newline>
por \n
.
Usando bash
:
#!/bin/bash
while IFS='' read -r line; do
echo "${line//,/$'\n'}";
done <infile.txt
ou sed
sed -e $'s/,/\\n/g' infile.txt
ou
sed 's/,/\
/g' infile.txt
Você pode usar cut
da seguinte forma:
Não sei de onde vêm os seus dados. Mas tenho certeza que você pode enviar suas informações para cut
:
cat yourfile.data | cut -d, --output-delimiter ' ' -f 1,2
como por man cut
...
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
--output-delimiter=STRING
use STRING as the output delimiter the default is to use the input delimiter
-f, --fields=LIST
select only these fields; also print any line that contains no delimiter character, unless the -s option is specified
...
Mas, se você precisar adicionar mais lógica, eu recomendo que você use sed
como @RomanPerekhrest disse. Você terá uma maneira mais flexível de analisar seus dados com poderosas expressões regulares. Na minha opinião, a melhor expressão regular para fazer isso seria:
'/^\s*\([^,]\+\)\s*,\s*([^,]\+\)\s*$/'
~ 0 ou mais espaços seguidos de qualquer coisa exceto vírgula, seguidos de 0 ou mais espaços, vírgula, 0 ou mais espaços seguidos de qualquer coisa exceto vírgula, seguidos de 0 ou mais espaços.
Caso você queira manter a estrutura da coluna, veja como receber somente aspas por espaços.
No bash:
while IFS=, read -r field1 field2; do
printf "%s %s\n" "$field1" "$field2"
done < test.txt
Referência: link
Com o uso de tr
(no caso específico que você forneceu), você pode traduzir o comma
para new line
user@server[/test]> cat text.txt
ent0
ent4
ent1,ent5
ent2,ent6
ent3,ent7
ent29,ent30
user@server[/test]> cat text.txt| tr "," "\n"
ent0
ent4
ent1
ent5
ent2
ent6
ent3
ent7
ent29
ent30
Tags bash text-processing