удаление возврата каретки 0d из файла .csv [закрыто]

Suponiendo que está ejecutando bash, coloque el siguiente código cerca del inicio del script que desea obtener pero no ejecutar:

if [ "${BASH_SOURCE[0]}" -ef "$0" ]
then
    echo "Hey, you should source this script, not execute it!"
    exit 1
fi

En bash, ${BASH_SOURCE[0]}contendrá el nombre del archivo actual que está leyendo el shell, independientemente de si se está generando o ejecutando.

Por el contrario, $0es el nombre del archivo actual que se está ejecutando.

-efprueba si estos dos archivos son el mismo archivo. Si lo son, alertamos al usuario y salimos.

Ni -efni BASH_SOURCEson ​​POSIX. Mientras que -efes compatible con ksh, yash, zsh y Dash, BASH_SOURCErequiere bash. En zsh, sin embargo, ${BASH_SOURCE[0]}podría ser reemplazado por ${(%):-%N}.

-3
07.04.2017, 21:35
2 ответа

Глядя на ваш шестнадцатеричный дамп, может показаться, что это должно решить вашу проблему:

tr -d '\015' < input > log

Поскольку восьмеричное \ 015 - это возврат каретки ^ Символ M .

Почему dos2unix не помогло, так это потому, что dos2unix просматривает последовательность \ r \ n , которой нет в вашем случае.

2
28.01.2020, 05:18

Может быть лучший вариант sed, но вот один:

sed -n -e '/,/!{N;s/\n//;}; /,/p' input > output

В нем говорится (по умолчанию, не печатая строки): если в строке есть запятая, то прочитайте строку next и замените новую строку. Затем, если в строке есть (сейчас или уже) запятая, распечатайте строку. Он считывает данные с input и записывает в output. С некоторыми seds вы можете использовать флаг sed -i для редактирования файла на месте.

Входной образец:

device_id,ip_address,serial_number
 SEP0c1167231746, 148.000.000.32
 SEP0c1167223fa5, 148.000.000.30
 SEP0c1167231746
, 148.000.000.32
 SEP0c1167223fa5
, 148.000.000.30

Образец выходных данных:

device_id,ip_address,serial_number
 SEP0c1167231746, 148.000.000.32
 SEP0c1167223fa5, 148.000.000.30
 SEP0c1167231746, 148.000.000.32
 SEP0c1167223fa5, 148.000.000.30
2
28.01.2020, 05:18

Теги

Похожие вопросы