2012-05-07 4 views
-1

Я хочу, чтобы разобрать строку (с использованием AWK/СЭД/Grep):Анализировать Строка токенов в Unix

"EffTimeStamp=20110203-210000#InputCtxNm=Forigen Exchange Today#RunType=EOD" 

И результат должен быть:

EffTimeStamp="20110203-210000" 
InputCtxNm="Forigen Exchange Today" 
RunType="EOD" 

Пожалуйста посоветуйте.

ответ

1

Требуется пара различных замещений, но sed может это сделать.

sed 's/^"//; s/=/="/g; s/#/"\n/g' 

e.g.

% echo '"EffTimeStamp=20110203-210000#InputCtxNm=Forigen Exchange Today#RunType=EOD"' | 
    sed 's/^"//;s/=/="/g;s/#/"\n/g' 
EffTimeStamp="20110203-210000" 
InputCtxNm="Forigen Exchange Today" 
RunType="EOD" 
0

Какую оболочку вы используете? Для Баша, вы можете написать

str="EffTimeStamp=20110203-210000#InputCtxNm=Forigen Exchange Today#RunType=EOD" 
oifs=$IFS 
IFS="#" 
set -- $str 
IFS=$oifs 
printf "%s\n" "[email protected]" 

выходы

EffTimeStamp=20110203-210000 
InputCtxNm=Forigen Exchange Today 
RunType=EOD 

Если вы не хотите использовать позиционные параметры, вы можете сохранять значения в виде массива:

arr=($str) 
printf "%s\n" "${arr[@]}" 
0

или и awk решение

echo "EffTimeStamp=20110203-210000#InputCtxNm=Forigen Exchange Today#RunType=EOD" \ 
| awk -F# -v OFS="\n" '{for (i=1;i<=NF; i++) printf("%s%s", $i, (i==NF ? "\n" : OFS)) }' 

выход

EffTimeStamp=20110203-210000 
InputCtxNm=Forigen Exchange Today 
RunType=EOD 

Я надеюсь, что это помогает.

+0

@Shelter: Как напечатать, если есть изменения список параметров? Например: EffTimeStamp = 20110203-210000 # InputCtxNm = Forigen Exchange Today # RunType = EOD # RegionName = US # InstruID = 9999 ..... " –

+0

Я отредактировал свое решение, чтобы решить ваше требование. Удачи. – shellter

0

Один простой способ с perl изменения $/ (разделитель входных записей) и $\ (Output Record Separator):

echo -e "EffTimeStamp=20110203-210000#InputCtxNm=Forigen Exchange Today#RunType=EOD" | 
perl -pe 'BEGIN { $/ = q[#]; $\ = qq[\n] }' 

Выход:

EffTimeStamp=20110203-210000# 
InputCtxNm=Forigen Exchange Today# 
RunType=EOD