私が持っていると仮定:「不可視」FS
awk 'BEGIN{
c["1","2","3"]=1
c["12","3"]=2
c["123"]=3 # fleeting...
c["1","23"]=4
c["1" "2" "3"]=5 # will replace c["123"] above...
for (x in c) {
print length(x), x, c[x]
split(x, d, "") # is there something that would split c["12", "3"] into "12, 3"?
# better: some awk/gawkism in one step?
for (i=1; i <= length(x); i++)
printf("|%s|", d[i])
print "\n"
}
}'
プリント:各場合において
4 123 4
|1||||2||3|
3 123 5
|1||2||3|
4 123 2
|1||2||||3|
5 123 1
|1||||2||||3|
、配列エントリを形成する,
の使用はA生成視覚的に似ている結果(123
)が表示されますが、別個のハッシュ値です。私がどこにあるかを決定することができるようにsplit
に使用するどのような値
(すなわち、どのような区切り文字は異なるc["123"]
よりc["12", "3"]
ハッシュを作る)印刷する際に失われた要素間の「目に見えない」区切りがあるということを思われます配列インデックスが作成されたときにコンマが配置された文字列?つまり、c["12","3"]
の配列エントリを作成した場合、"12","3"
と"123"
の文字列が(端末内で)c["123"]
と視覚的に異なる文字列として印刷する最も簡単な方法は何ですか? = c["12" SUBSEP "3"]
(私は配列エントリを作成するとき、私はc["12" "," "3"]
を行うことができることを知っている。しかし、何が違ったc["123"]
よりc["12","3"]
ハッシュを行い、それらがどのようにターミナルに異なっ見られるように、それらを印刷するには...)
パーフェクト。ありがとう。 'SUBSEP'は' gawk'ですが、正しいのですか? – dawg
SUBSEPはすべてのawkバージョンにはありません。 –
Hmmm。 Bruce Barnettは[NAWK/GAWKのみ](http://www.grymoire.com/Unix/Awk.html#uh-62)ですが、それは[POSIX man page](http://pubs.opengroup。 org/onlinepubs/009695399/utilities/awk.html)。ブルースは編集が必要です。 – dawg