0

次の行を使用して、文字列からフィールドの配列を作成しました。

var=$(echo $FieldName | awk -F";" '{print $1,$2,$3,$4,$5,$6,$7,$8,$9}')

$FieldNameフィールドがセミコロンで区切られた文字列です。

$FieldName空白のない文字列が含まれている場合、正しく動作します。問題は、空白文字が埋め込まれている場合、スクリプトは空白を改行として扱うことです。

例えば:

$FieldName = aa;bcd;cal;da;ea;fa;ga;ha;ia

期待[aa,bcd,cal,da,ea,fa,ga,ha,ia]通りです。

だが$FieldName = aa;bcd;cal;da;ea;fa;ga;ha;ia <= ia2

与える[aa,bcd,cal,da,ea,fa,ga,ha,ia] , [<=, , , , , , , , ] and [ia2, , , , , , , , ]

何か案は?

4

2 に答える 2

2

あなたは必要ありませんawk

IFS=\;
set $FieldName
var=$@
于 2012-09-10T10:18:08.127 に答える
1

の区切り文字を変更しようとしているようです$FieldName。その場合は、次のawkように使用します。

echo "$FieldName" | awk -v FS=',' -v OFS=';' 1

1、デフォルト ブロックを実行します: { print $0 }.

またはtr:

echo "$FieldName" | tr ';' ','    

出力:

aa,bcd,cal,da,ea,fa,ga,ha,ia <= ia2
于 2012-09-10T12:41:01.493 に答える