2016-12-29 2 views
0

Как определить окончание строки текстового файла с помощью команды busybox?Как определить окончания строк во встроенной среде?

Моя цель: отобразить файлы в каталоге и установить ли они окончание строк DOS или окончание строк UNIX. Я бы в идеале хотел бы сделать это в каком-то цикле, как это:

for i in *; do 
    **determineEndings** $i 
done 

или

find . -type f | **determineEndings** 

К сожалению, так как у меня есть версия команд busybox, у меня нет команды file доступный, чтобы помочь мне. Я нашел двоичный file для моей целевой системы и скопировал magic файл, где file --version говорит мне, но все еще получаю следующее сообщение об ошибке:

$ file -d myfile.txt 
unknown, 0: Warning: using regular magic file `/usr/share/misc/magic' 
file: could not find any valid magic files! 

Я могу компилировать код C для целевой среды так просто код C I может скомпилироваться в двоичный файл для целевой системы.

+0

Можете ли вы использовать что-то вроде 'grep -c '\ r" $ i'? –

+0

Я хотел предложить нечто подобное Walther: 'grep -l $ '\ r' *' перечисляет Dos, поданные в то время как 'grep -L $ '\ r' *' перечисляет файлы Unix. –

+0

Предложение '-c' возвращает' 90' в версии dos и unix моего же файла. – lissachen

ответ

2

Дайте этому попытку:

grep -q `echo -e '\015'` $i && echo DOS 

эхо-команда будет производить пару CR-LF, а затем Grep будет искать для этих точных символов, находя их в текстовом файле DOS. Я тестировал это с помощью echo и grep busybox, и это сработало. Возможно, другая версия busybox с различными встроенными компонентами может не работать.

Файл со смешанными концами будет обнаружен как DOS. Вы можете использовать -c, чтобы получить количество CR-LF-пар, а затем сравнить с общими линиями с wc -l, если вы хотите определить, сколько очков DOS и сколько окончаний UNIX у него есть.

Если у вас есть двоичные файлы, вам нужно будет определить, является ли файл текстовым или двоичным.

Смежные вопросы