Transferência de arquivos do AIX para o Windows - problemas de CR e LF (caracteres de controle)

0

Eu tenho um problema ao transferir arquivos entre o Unix (AIX) e o Windows. Eu uso o seguinte comando de montagem para montar uma pasta do Windows no Unix.

mount -vcifs -n / admin / @ dmin -o file_mode = 775, dir_mode = 775, uid = 0, gid = 0 / TEST / Finanças

Na minha máquina Windows, eu pego esses arquivos neste diretório de montagem para processamento. Eu uso o IBM Connect: Direct para transferir os arquivos.

O problema é que ao mover um arquivo do Windows Mount no Unix para o servidor Windows, o CR (Carriage Return) está ausente no meu arquivo e apenas LF (Line feed) está presente, o que significa que quando você abre com um bloco de notas , você pode ver todo o texto uma única linha.

Como mantenho o CR e o LF ao transferir arquivos do Unix para o Windows?

Há algo errado com meu comando de montagem?

    
por DextrousDave 29.04.2015 / 15:10

2 respostas

2

Eu não acho que isso provavelmente tenha algo a ver com a montagem. Tem certeza de que os caracteres CR estão lá originalmente no arquivo? Supondo que eles não sejam, você pode usar unix2dos para adicioná-los, embora eu não tenha realmente verificado que existe para o AIX. Você poderia usar sed como

sed -i -e 's/\n/\r\n/g' <file>

se você não tiver unix2dos disponível. O -i indica ao sed para modificar o arquivo no lugar - normalmente ele irá imprimir os resultados para stdout. Você pode ter qualquer número de -e flags que diga ao sed para realizar algumas ações. Neste caso, estamos usando a ação s para substituir valores. O / serve como o delimitador para o comando de substituição. A primeira parte, \n , é o padrão que estamos procurando, e a segunda parte, \r\n , é o padrão para substituí-lo. O% final g diz ao sed para que ele seja encontrado em todos os lugares em que ele é visto, não apenas no primeiro lugar por linha (embora isso provavelmente não importe muito ao combinar o final de uma linha).

    
por 29.04.2015 / 15:20
1

Não importa como você montou a partição. Cada byte de cada arquivo será transferido. Se seus arquivos não tiverem retornos de carro após a transferência, eles não terão antes. Não sei qual comando executar no AIX para verificar a codificação de seus arquivos, mas você poderia apenas examiná-los em um editor binário e ver se as linhas são finalizadas com LF ou CRLF.

Se você deseja copiar arquivos de texto do UNIX para o Windows e ter as novas linhas convertidas em CRLF, você pode usar ftp no modo ASCII. Eu acho que conexões seriais podem fazer conversão de nova linha também. Não conheço nenhum outro protocolo que tente converter texto em trânsito, embora possa haver alguns.

Você também pode converter todos os seus arquivos antes ou depois da transferência, ou usar um editor no Windows que entenda as novas linhas do UNIX.

    
por 29.04.2015 / 15:18