首页 > 解决方案 > bash Grep 多行“BID_1:****”并保存到“****_name”,其中 **** 是数字

问题描述

如标题所示 - 我有一个包含多行的文件,其中每行都包含 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

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

grep "BID_1:****" filename > ****_filename2

如果没有,我该怎么做才能不手动进行,grep by grep?

感谢帮助!

标签: bashubuntugrep

解决方案


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

awk '{
  file = substr($3, 7) "_suffix"
  print > file
  # close(file)
}' file

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


推荐阅读