我想得到 B* 之后的数字,但不包括Y和它之后的数字。我试图使用我从朋友那里得到的这个命令,但它不起作用:
grep -oP 'B.\K[\w\s\d]' < tus.txt | sort -u
Run Code Online (Sandbox Code Playgroud)
~TUS*21424565*4716129*B*222791885833*Y*
~TUS*21470045*4733746*B*36*Y*19-OCT-16**B*2239681
~TUS*21758806*4932668*B*00081907*Y*2707826
~TUS*21758851*4932694*B*00082025*Y*2707871
~TUS*21758862*4932739*B*262105589241-20172-31489016
~TUS*21758767*4932626*B*00081684*Y*2707792
~TUS*21758861*4932693*B*00082024*Y*2707881
~TUS*21758895*4932764*B*4578873831221*Y*
~TUS*21760350*4933404*B*00082603*Y*2708838
~TUS*21759295*4932379*B*00082403*Y*2708332
Run Code Online (Sandbox Code Playgroud)
222791885833
36
00081907
00082025
262105589241-20172-31489016
00081684
00082024
4578873831221
00082603
00082403
Run Code Online (Sandbox Code Playgroud)
Kus*_*nda 10
输入是-定*
界的。获取第五个字段:
$ cut -d '*' -f 5 tus.txt
222791885833
36
00081907
00082025
262105589241-20172-31489016
00081684
00082024
4578873831221
00082603
00082403
Run Code Online (Sandbox Code Playgroud)
这是您提到的所需输出,但您还谈到了对其进行排序:
$ cut -d '*' -f 5 tus.txt | sort -u
00081684
00081907
00082024
00082025
00082403
00082603
222791885833
262105589241-20172-31489016
36
4578873831221
Run Code Online (Sandbox Code Playgroud)
如果您出于某种原因想要对该字段上的原始数据进行排序(此处不删除重复项):
$ sort -t '*' -k5,5 tus.txt
~TUS*21758767*4932626*B*00081684*Y*2707792
~TUS*21758806*4932668*B*00081907*Y*2707826
~TUS*21758861*4932693*B*00082024*Y*2707881
~TUS*21758851*4932694*B*00082025*Y*2707871
~TUS*21759295*4932379*B*00082403*Y*2708332
~TUS*21760350*4933404*B*00082603*Y*2708838
~TUS*21424565*4716129*B*222791885833*Y*
~TUS*21758862*4932739*B*262105589241-20172-31489016
~TUS*21470045*4733746*B*36*Y*19-OCT-16**B*2239681
~TUS*21758895*4932764*B*4578873831221*Y*
Run Code Online (Sandbox Code Playgroud)