Eu quero mesclar duas strings em uma linha com |
o delimitador. Podemos combinar usando awk '{$1,$2,$3$4$5}'
, existe alguma outra maneira de mesclar a string usando |
como delimitador?
Entrada:
XXXXXXXX 0 Xxyxhsag | yuiji
resultado:
XXXXXXXX 0 Xxyxhsag|yuiji
Supondo que seus dados contenham campos separados por
|
e que os|
caracteres delimitadores possam conter espaços em ambos os lados. Em seguida, o separador de campo de entrada que você usariaawk
é a expressão*[|] *
, ou seja, uma expressão que corresponda ao|
caractere e a quaisquer espaços adjacentes.Usar o caractere único
|
como separador de campo de saída e forçarawk
a recriar os registros para saída (definindo um dos campos) resolveria seu problema, pelo menos da maneira que você o apresentou em sua pergunta.ou equivalente,
Testando isso:
Você também pode usar uma substituição
sed
com uma expressão semelhante:Tudo isso assumindo que podemos tratar os dados como texto ou como dados CSV "simples", sem delimitadores, novas linhas ou aspas incorporados em campos entre aspas.
dados de entrada fornecidos,
separador padrão
ou use o separador padrão
awk
(um ou mais espaço ou tabulação consecutivos),observe que a 3ª mudança de campo
Isso pode ser uma solução se você sempre tiver 5 campos em seu caso real.
separador de tubo (|)
você pode usar
|
como separador, mas isso manterá espaço nos camposisso pode ser mais explícito se eu alterar o separador de saída para
!
Agora, você não tem muito ganho, pois precisa remover o espaço à direita
$1
e à esquerda de$2
.com
awk
você pode tentar:|
)|
usarsub()
: