次のawkスクリプトは、前のスペースを' '
フィールド区切り文字として無視しますが、他の文字を空の$ 1の前にあるフィールドの区切り文字として扱う方法を示しています。
フィールド区切り文字のすべての値に対して動作を一貫して作成する方法はありますか?
echo -e " Data\tdlm\t\$1\t\$2\t\$3"
for d in '^' ':' '"' 'x' '/' ' ' ;do
echo "${d}1${d}2${d}" |awk -F"$d" '
{ printf "|%s|\t|%s|\t|%s|\t|%s|\t|%s|\n", $0, FS, $1, $2, $3; }'
done
出力:
Data dlm $1 $2 $3
|^1^2^| |^| || |1| |2|
|:1:2:| |:| || |1| |2|
|"1"2"| |"| || |1| |2|
|x1x2x| |x| || |1| |2|
|/1/2/| |/| || |1| |2|
| 1 2 | | | |1| |2| ||
ベストアンサー1
FS を正規表現FS = "[ \t]+"
(たとえば「空白」) に設定すると、前後の空白は削除されません。 awkは前後にスペースを削除しますFS=" "
。
私はawkにこれをしないように言うことは不可能だと思いますFS=" "
。