小编Was*_*haW的帖子

如何打印没有匹配行的输入模式?

我有这个 grep 命令来查找具有匹配模式的文件。

grep -oiE 'pattern1|pattern2|pattern3|pattern4' *pattern_in_a_filename* | sort -u
Run Code Online (Sandbox Code Playgroud)

输出:

file_one:pattern1
file_two:pattern2
file_two:pattern3
Run Code Online (Sandbox Code Playgroud)

我想要的是pattern4像这个例子一样输出没有被发现的说法:

file_one:pattern1
file_two:pattern2
file_two:pattern3
pattern4 not found
Run Code Online (Sandbox Code Playgroud)

我正在制作成千上万种模式,并且必须尽快完成,因为这些是我们运营中所需的关键数据。

grep text-processing

5
推荐指数
3
解决办法
476
查看次数

如何使用此特定模式进行 grep 和排序?

我想得到 B* 之后的数字,但不包括Y和它之后的数字。我试图使用我从朋友那里得到的这个命令,但它不起作用:

grep -oP 'B.\K[\w\s\d]' < tus.txt | sort -u
Run Code Online (Sandbox Code Playgroud)

文件.txt

~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)

linux grep

3
推荐指数
1
解决办法
3798
查看次数

如何找到具有特定字符串集的特定文件?

这是给定的文件集:

./20170524/18909-20170524182010-PBS74C2VTTCKBMKGQC7YUVEJ3U-362511-19614379.XFA.SOFS_EDI
./20170524/18909-20170524182009-PBS74C2VTTCKBMKGQC7YUVEJ3U-362514-19614381.XFA.SOFS_EDI
./20170524/18909-20170524182010-PBS74C2VTTCKBMKGQC7YUVEJ3U-362532-19614390.XFA.SOFS_EDI
./20170524/18909-20170524182009-PBS74C2VTTCKBMKGQC7YUVEJ3U-362503-19614371.XFA.SOFS_EDI
./20170524/18909-20170524182009-PBS74C2VTTCKBMKGQC7YUVEJ3U-362506-19614372.XFA.SOFS_EDI
Run Code Online (Sandbox Code Playgroud)

这是每个文件中的内容。他们有不同的AK9细分市场。像AK9*AAK9*PAK9*RAK9*E

ISA*00*          *00*          *SS*252649841464SS *01*12564486M      *102453*1254*U*025402*21651681320*0*S*>~SS*SS*5648408456SS*0150158011S*20170228*1921*020151018*X*0210540~SS*997*008609070~AK1*SH*107405~AK2*856*362518~AK5*A~AK9*A*1*1*1~SE*6*008609070~GE*1*008604488~IEA*1*008602662~
Run Code Online (Sandbox Code Playgroud)

我正在寻找具有这种模式的文件:

AK9*PAK9*RAK9*E

linux string patterns

3
推荐指数
1
解决办法
166
查看次数

如何使用多个模式查找文件

我想找到一个使用多种模式的文件。

这是我的原始命令:但是键入时间很长并且xargs zgrep是多余的。想象一下,如果我有 10 个或更多的模式要输入?

find -mtime -$a -type f ! -name "*.bak*" | xargs zgrep -il "$b" | xargs zgrep -il "$c" | xargs zgrep -il "$d" | xargs zgrep -il 'ST.997' | sort -u
Run Code Online (Sandbox Code Playgroud)

我想要更少的字符来输入,例如:

find -mtime -$a -type f ! -name "*.bak*" | xargs zgrep -il "$b && $c && $d" | sort -u
Run Code Online (Sandbox Code Playgroud)

编辑:如果您注意到模式与$. 那是因为命令在脚本中,并且这些变量具有字符串/数字值。

我将使用它来改进我的脚本,尤其是它的运行时间。

grep find shell-script filenames

2
推荐指数
1
解决办法
1770
查看次数

文本处理 - 如何输出与所有行中的模式匹配的文件

我有这个file.txt包含这个列表。

LIST: ACCEPTED - rfhfui4fuw3hjnf43.4fj9u8fhjkszdnvckizfjh489.dfsdf
LIST: ACCEPTED - rfhfui4fuw3hjnf43.fj9u8fhjkszdnvckizfjh489.dfsdf
LIST: ACCEPTED - rfhfui4fuw3hjnf43.4fj9u8fhjkszdnvckizfjh489.dfsdf
LIST: ACCEPTED - rfhfui4fuw3hjnf43.4f.j9u8fhjkszdnv.ckizfjh489.dfsdf
LIST: ACCEPTED - rfhfui4fuw3hjnf.43.4fj9u8fhjkszdnvckizfjh489.dfsdf
Run Code Online (Sandbox Code Playgroud)

我想要发生的是知道是否file.txt所有行都匹配我想要找到的模式。

例如,如果模式ACCEPTED匹配了file.txtthen 的所有行echo "All lines are Accepted"

我认为grep对此有答案,但我仍在试验中,但仍然没有运气。

我想if...else有条件地使用它。

grep text-processing

2
推荐指数
1
解决办法
65
查看次数

如何输出排除某些文件扩展名的查找命令的结果

这是我的查找命令:

find -mtime -$a | xargs zgrep -il ''$b'' | xargs zgrep -il ''$c'' | xargs zgrep -il ''$d'' | xargs zgrep -il 'ST.997' | sort -u
Run Code Online (Sandbox Code Playgroud)

这是上述命令的示例输出:

example_file.dat.Z
example2_file.dat.Z
example2_file.dat.bak.1234567890.Z
example3_file.dat.Z
example3_file.dat.bak.Z
example4_file.dat.Z
example4_file.dat.bak.qwertyuiop.Z
Run Code Online (Sandbox Code Playgroud)

如您所见,它输出带有“.bak”扩展名的相同文件。我想要的是在运行脚本时排除/不显示该文件。像这个示例输出:

example_file.dat.Z
example2_file.dat.Z
example3_file.dat.Z
example4_file.dat.Z
Run Code Online (Sandbox Code Playgroud)

编辑:我忘了。有时它是在 zip 文件中。

shell-script

0
推荐指数
1
解决办法
123
查看次数