Luk*_*sCB 3 regex sorting awk list
我有这样的数据(文件被称为list-in.dat)
a ; b ; c ; i
d
e ; f ; a ; b
g ; h ; i
Run Code Online (Sandbox Code Playgroud)
并且我想要一个这样的列表(输出文件list-out.dat),其中包含所有项目,按字母顺序(不区分大小写)和每个唯一项目仅一次。
a
b
c
d
e
f
g
h
i
Run Code Online (Sandbox Code Playgroud)
我的尝试是:
awk -F " ; " ' BEGIN { OFS="\n" ; } {for(i=0; i<=NF; i++) print $i} ' file-in.dat | uniq | sort -uf > file-out.dat
Run Code Online (Sandbox Code Playgroud)
但我最终得到了所有的蚂蚁,除了那些只有一个项目的行:
a
b
c
e
f
g
h
i
Run Code Online (Sandbox Code Playgroud)
无论一行中有多少项目/如果缺少字段分隔符,我如何获得所有(唯一的、已排序的)项目?
使用gnu-awk:
awk -F '[[:blank:]]*;[[:blank:]]*' '{
for (i=1; i<=NF; i++) uniq[$i]
}
END {
PROCINFO["sorted_in"]="@ind_str_asc"
for (i in uniq)
print i
}' file
Run Code Online (Sandbox Code Playgroud)
a
b
c
d
e
f
g
h
i
Run Code Online (Sandbox Code Playgroud)
对于non-gnu awk使用:
awk -F '[[:blank:]]*;[[:blank:]]*' '{for (i=1; i<=NF; i++) uniq[$i]}
END{for (i in uniq) print i}' file | sort
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |