bash Grep 多行查找“BID_1:****”并保存到“****_name”,其中 **** 是数字

try*_*elf 1 bash ubuntu grep

如标题所示 - 我有一个包含多行的文件,其中每行都包含 string BID_1:********是不同的数字。例如:

string1 string2 BID_1:1111 string3
string1 string2 BID_1:2222 string3
string1 string2 BID_1:3333 string3
string1 string2 BID_1:4444 string3
string1 string2 BID_1:5555 string3
Run Code Online (Sandbox Code Playgroud)

是否有机会使用一个命令来 grepBID_1:1111并保存到1111_nameBID_1:2222保存到2222_name、...、BID_1:5555保存到5555_name等?我的意思是像

grep "BID_1:****" filename > ****_filename2
Run Code Online (Sandbox Code Playgroud)

如果没有,我该如何做才能避免手动执行,grep by grep?

感谢帮助!

ogu*_*ail 5

我认为使用 awk 会更容易。喜欢:

awk '{
  file = substr($3, 7) "_suffix"
  print > file
  # close(file)
}' file
Run Code Online (Sandbox Code Playgroud)

神奇的7是前缀的长度BID_1:加1,3是字符串出现的字段数。您可能需要取消注释,close(file)具体取决于实际输入的大小和您拥有的 awk 版本。