У меня есть проблема, разделяющая строку с разделителями на трубу, содержащую последовательные пробелы, используя Unix-Script.Unix: Разделение разделителя на строку Строка, содержащая последовательные пробелы
Скажем, у меня есть файл с линиями, как
Filename.txt|instancename1|PARAMETER1='C 15 K','G 7H 35'|PARAMETER2=56||PARAMETER3=TEST||instancename2|PARAMETER1='C 15 K','G 7H 35'||
...
...
До сих пор мой Unix-Script выглядит следующим образом (ненужные части полосатые):
#!/bin/ksh
WORKDIR=$1
FILE_WORK_DIR=somedir/$WORKDIR
PARAM_FILE=$FILE_WORK_DIR/TESTFILE.csv
while read PARAM_LINE
do
OUT_FNAME=`echo $PARAM_LINE |cut -d'|' -f1`
echo $PARAM_LINE |awk -F'|' '{n=split($0,col,FS);
for (i=2;i<=n;i++) {if (col[i] != "") print col[i]}
}' > $FILE_WORK_DIR/$OUT_FNAME
done < $PARAM_FILE
желаемого выход должен выглядеть это:
instancename1
PARAMETER1='C 15 K','G 7H 35'
PARAMETER2=56
PARAMETER3=TEST
instancename2
PARAMETER1='C 15 K','G 7H 35'
Используя этот скрипт my ou tput выглядит следующим образом:
instancename1
PARAMETER1='C 15 K','G 7H 35'
PARAMETER2=56
PARAMETER3=TEST
instancename2
PARAMETER1='C 15 K','G 7H 35'
Если посмотреть на параметр1 последовательные пространства получения обрезается до одного места:
PARAMETER1='**C 15 K**','G 7H 35'
PARAMETER1='**C 15 K**','G 7H 35'
Почему это? Мне нужны последовательные пробелы так же, как и они. Я предполагаю, что это очень сложная проблема, но мои навыки Unix не так хороши. Любая помощь очень ценится. Благодаря
Say 'Эхо "$ PARAM_LINE"' вместо 'эхо $ PARAM_LINE'. – devnull
Yap, который работает. Благодаря! –