特定の変更を強調するためにパッチを並べ替えたいと思います。
$ curl -s https://lists.fedorahosted.org/archives/list/[email protected]/message/ZN6VMFN65JWV7NMG2XEHPUI2AGSLRNGW/attachment/2/0001-LDAP-Change-the-default-rfc2307-autofs-attribute-map.patch | \
grep '^[+-] *{ "' | sort
出力は次のとおりです
- { "ldap_autofs_entry_object_class", "automount", SYSDB_AUTOFS_ENTRY_OC, NULL },
+ { "ldap_autofs_entry_object_class", "nisObject", SYSDB_AUTOFS_ENTRY_OC, NULL },
- { "ldap_autofs_entry_value", "automountInformation", SYSDB_AUTOFS_ENTRY_VALUE, NULL },
+ { "ldap_autofs_entry_value", "nisMapEntry", SYSDB_AUTOFS_ENTRY_VALUE, NULL },
+ { "ldap_autofs_map_name", "nisMapName", SYSDB_AUTOFS_MAP_NAME, NULL },
- { "ldap_autofs_map_name", "ou", SYSDB_AUTOFS_MAP_NAME, NULL },
- { "ldap_autofs_map_object_class", "automountMap", SYSDB_AUTOFS_MAP_OC, NULL },
+ { "ldap_autofs_map_object_class", "nisMap", SYSDB_AUTOFS_MAP_OC, NULL },
ソートを最初の文字+/-でソートしたいと思いました。
文字が0x2bと0x2dで一致することを確認できます。
$ curl -s https://lists.fedorahosted.org/archives/list/[email protected]/message/ZN6VMFN65JWV7NMG2XEHPUI2AGSLRNGW/attachment/2/0001-LDAP-Change-the-default-rfc2307-autofs-attribute-map.patch | grep '^[+-] *{ "' | cut -c1 | hexdump -C
00000000 2d 0a 2d 0a 2b 0a 2b 0a 2d 0a 2b 0a 2d 0a 2b 0a |-.-.+.+.-.+.-.+.|
00000010
sort -d
同じ結果を提供します。 -d
+/- は英数字を意味しますが、+/- は英数字を意味しません。 sort -n
動作しません(動作することを期待していません。)
私は認めたいものより長い間Linux / Unixを使用してきましたが、以前はこれを見たことがありません!
...予想されたことですか?それを使用する別の方法がありますかsort
? (Perl onelinerでも可能であることを知っています...)
ベストアンサー1
で述べたようにlsソートが英数字以外の文字を無視するのはなぜですか?、デフォルトの照合は UTF8 で、UTF8 は +/- 等価とみなされます。
ソートを設定すると、LC_COLLATE=C
ASCIIソート順序を取得できます。
curl -s https://lists.fedorahosted.org/archives/list/[email protected]/message/ZN6VMFN65JWV7NMG2XEHPUI2AGSLRNGW/attachment/2/0001-LDAP-Change-the-default-rfc2307-autofs-attribute-map.patch | \
grep '^[+-] *{ "' | LC_COLLATE=C sort