以下 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=" "
.