• Awk使用一例:获取ASCII可见字符


          要做一个需求, 支持可见特殊字符的密码设置。 首先, 需要获取到所有可见特殊字符。 到网上搜索到 ASCII 字符表格, 并复制到文本文件 vschars.txt:

    00	00	0	nul	100	40	64	@
    01	01	1	soh	101	41	65	A
    02	02	2	stx	102	42	66	B
    03	03	3	etx	103	43	67	C
    04	04	4	eot	104	44	68	D
    05	05	5	enq	105	45	69	E
    06	06	6	ack	106	46	70	F
    07	07	7	bel	107	47	71	G
    10	08	8	bs	110	48	72	H
    11	09	9	ht	111	49	73	I
    12	0a	10	nl	112	4a	74	J
    13	0b	11	vt	113	4b	75	K
    14	0c	12	ff	114	4c	76	L
    15	0d	13	er	115	4d	77	M
    16	0e	14	so	116	4e	78	N
    17	0f	15	si	117	4f	79	O
    20	10	16	dle	120	50	80	P
    21	11	17	dc1	121	51	81	Q
    22	12	18	dc2	122	52	82	R
    23	13	19	dc3	123	53	83	S
    24	14	20	dc4	124	54	84	T
    25	15	21	nak	125	55	85	U
    26	16	22	syn	126	56	86	V
    27	17	23	etb	127	57	87	W
    30	18	24	can	130	58	88	X
    31	19	25	em	131	59	89	Y
    32	1a	26	sub	132	5a	90	Z
    33	1b	27	esc	133	5b	91	[
    34	1c	28	fs	134	5c	92	
    35	1d	29	gs	135	5d	93	]
    36	1e	30	re	136	5e	94	^
    37	1f	31	us	137	5f	95	_
    40	20	32	sp	140	60	96	'
    41	21	33	!	141	61	97	a
    42	22	34	"	142	62	98	b
    43	23	35	#	143	63	99	c
    44	24	36	$	144	64	100	d
    45	25	37	%	145	65	101	e
    46	26	38	&	146	66	102	f
    47	27	39	`	147	67	103	g
    50	28	40	(	150	68	104	h
    51	29	41	)	151	69	105	i
    52	2a	42	*	152	6a	106	j
    53	2b	43	+	153	6b	107	k
    54	2c	44	,	154	6c	108	l
    55	2d	45	-	155	6d	109	m
    56	2e	46	.	156	6e	110	n
    57	2f	47	/	157	6f	111	o
    60	30	48	0	160	70	112	p
    61	31	49	1	161	71	113	q
    62	32	50	2	162	72	114	r
    63	33	51	3	163	73	115	s
    64	34	52	4	164	74	116	t
    65	35	53	5	165	75	117	u
    66	36	54	6	166	76	118	v
    67	37	55	7	167	77	119	w
    70	38	56	8	170	78	120	x
    71	39	57	9	171	79	121	y
    72	3a	58	:	172	7a	122	z
    73	3b	59	;	173	7b	123	{
    74	3c	60	<	174	7c	124	|
    75	3d	61	=	175	7d	125	}
    76	3e	62	>	176	7e	126	~
    77	3f	63	?	177	7f	127	del

          现在, 需要从该文本文件中抽取出所有可见特殊字符, 当然, 也包括常见的大小写字母及数字。 使用如下命令即可: 

    $ awk  'BEGIN{OFS="
    "}{print $4, $8}' vschars.txt | sort | awk 'BEGIN{ORS=""}{if(length($0) ==1){print $0}}'
    '-!"#$%&()*,./:;?@[]^_`{|}~+<=>0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ

         解释一下:

         1.  首先要输出需要的字符。awk 使用 $4, $8 可以获取所需列,默认空白符分割, 输出分割符 OFS 选择换行, 保证每行一个;

         2.  接着做一个排序, 使得字母、数字、特殊字符分开显示;

         3.  发现可见字符是一个字符, 可以使用记录长度进行过滤: if(length($0) ==1){print $0}。 记录分隔符 ORS 选择空字符串,保证所有可见字符紧挨着显示。便于直接写正则表达式。

         支持ASCII可见字符(包含空格)的正则表达式为: ^[a-zA-z0-9'!"#$%&()*,./:;?@^_`\[\]{|}~+<=>\ -]{m,n}$

  • 相关阅读:
    MongoDB下,启动服务时,出现“服务没有响应控制功能”解决方法
    如何安装mongodb.msi
    jade和ejs两者的特点
    Node.js中的http.request方法的使用说明
    34丨关于Linux网络,你必须知道这些(下)
    33 | 关于 Linux 网络,你必须知道这些(上)
    osi 七层模型 通俗易懂
    32 | 浅谈容器网络
    Linux 三剑客之SED行天下
    js 基本类型与引用类型的区别
  • 原文地址:https://www.cnblogs.com/lovesqcc/p/4381918.html
Copyright © 2020-2023  润新知