Eu tentei escrever um script no qual estou lendo um arquivo linha por linha. Eu devo substituir uma barra invertida (\) por uma vírgula (,).
O arquivo de entrada é o seguinte:
1,2,3,WORKSTATION1\A,5
1,2,3,WORKSTATION2\B,5
1,2,3,WORKSTATION1\C,5
1,2,3,WORKSTATION1\D,5
1,2,3,WORKSTATION1\E,5
1,2,3,WORKSTATION1\F,5
1,2,3,WORKSTATION1\G,5
A parte do código que escrevi é a seguinte:
#!/bin/bash
cat $1 | while read -r line
do
ln=$(echo $line | xargs | sed 's/\/,/g' )
echo $ln
done
echo Done!
Quando executo ./script.sh file.csv
, estou recebendo a seguinte saída:
1,2,3,WORKSTATION1A,5
1,2,3,WORKSTATION2B,5
1,2,3,WORKSTATION1C,5
1,2,3,WORKSTATION1D,5
1,2,3,WORKSTATION1E,5
1,2,3,WORKSTATION1F,5
1,2,3,WORKSTATION1G,5
Done!
Considerando que estou esperando uma saída da seguinte forma:
1,2,3,WORKSTATION1,A,5
1,2,3,WORKSTATION2,B,5
1,2,3,WORKSTATION1,C,5
1,2,3,WORKSTATION1,D,5
1,2,3,WORKSTATION1,E,5
1,2,3,WORKSTATION1,F,5
1,2,3,WORKSTATION1,G,5
Done!
Eu também tentei substituir sed 's/\/,/g'
por tr "\" ","
, mas isso não está ajudando. Quaisquer modificações necessárias?