Я бы взял perl
, потому что тогда вы можете разделить
и объединить
:
#!/usr/bin/env perl
use strict;
use warnings;
while ( <DATA> ) {
chomp;
my @fields = split /;/;
s/\s+//g for @fields;
print join ";", @fields, "\n";
}
__DATA__
03139; 5; IT1234978208; 20150930 ; CTZ 13/31.12.15;
03137; 6; IT1234978206; 20151015 ; CTZ 13/31.11.18;
03134; 8; IT1234974406; 20151212 ; CTZ 13/37.13.17;
Теперь, это удаляет все пробелы в полях, давая:
03139;5;IT1234978208;20150930;CTZ13/31.12.15;
03137;6;IT1234978206;20151015;CTZ13/31.11.18;
03134;8;IT1234974406;20151212;CTZ13/37.13.17;
Но если вы просто хотите удалить начальный / конечный пробел:
s / ^ \ s + | \ s + $ // g для @fields;
Это может быть однострочное, как:
perl -F; -lape 's/^\s+|\s+$//g for @F; print join ";", @F;'
Где:
-F;
устанавливает разделитель -l
говорит об автоматическом удалении / повторном добавлении окончаний строк. -a
- автоматическое разделение (по разделителю в -F
или пробел по умолчанию) -e
- «выполнить этот фрагмент». Попробуйте явно перейти к каталогу внутри самого сценария оболочки, используя cd и полный путь. У меня была аналогичная проблема, и я решил ее, сделав это. Например, в верхней части вашего скрипта после #! / Bin / bash
вы должны поместить:
cd /home/pi/Some_Directory`
# the rest of your script
Это, кажется, относительно старый вопрос, но я считаю, что проблема связана с заголовком (Shebang). Ваш скрипт имеет следующий заголовок:
#! /bin/bash
Однако он должен быть:
#!/bin/bash
То есть без пробелов между #!
и /bin/bash
. Это случалось со мной раньше, и удаление пробела решило это.