Вы могли сделать это как это с awk:
awk 'BEGIN { FS = OFS = "\t" } { for(i=1; i<=NF; i++) if($i ~ /^ *$/) $i = 0 }; 1' file
Установка FS и OFS к вкладке гарантирует, что вывод правильно разграничен. Взгляды для цикла на каждое поле и обнуляют его, если это пусто. Тот в конце является сокращением от { print $0 }
.
Первое сообщение об ошибке : command not found
вместо обычного формата bash: SOMECOMMAND: command not found
. Это указывает, что что-то подозрительное продолжается.
То, что продолжается, - то, что Ваш сценарий содержит символы возврата каретки в конце некоторых строк. В соответствии с Windows, новая строка представлена CR с двумя последовательностями символов, LF (возврат каретки, сопровождаемый с методической точностью, питаются). Под всеми разновидностями Unix новая строка представлена символом LF только. Bash видит строку как SOMECOMMAND␍
были ␍
символ CR, который это анализирует как вызов к названной команде SOMECOMMAND␍
. С тех пор нет такой команды, удар отображает свое обычное сообщение об ошибке.
В терминале управляющий символ CR кладет обратно курсор к началу строки. Таким образом, остальная часть сообщения перезаписывает название команды.
Фиксация не должна использовать редактора Windows, чтобы отредактировать сценарии оболочки или настроить Вашего редактора для не помещения символов CR в сценарии оболочки.
Для преобразования существующего файла на месте в соответствии с Linux или Cygwin от окончаний строки Windows до окончаний строки Unix можно использовать следующую команду. Это работает, даже если исходный файл смешал Windows и окончания строки Unix.
sed -i -e 's/\r$//' parte.sh
Использовать split(1)
, например. split --lines=50000 pa.txt
(или набор Ваш собственный префикс). Вероятно, очень, намного быстрее, чем плохой awk
.
DESCRIPTION
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when
INPUT is -, read standard input.
Если это - sh сценарий, похоже, что ошибка находится в Вашем функциональном определении.
desc()
{
Должен быть:
function desc {
Пример сценария:
#!/bin/bash
function desc {
echo Hi
}
echo Starting
desc
echo Ending
"awk: cmd. line:10: (FILENAME=- FNR=1) fatal: expression for ``<' redirection has null string value``"
В некоторых ответах выше, почему бы не использовать unix2dos? Я думал, что это было стандартно с Cygwin.
– tamarintech
24.10.2013, 17:30