Grep 用户输入以查找号码

Grep user input to find number

我有一个看起来像这样的文件

example text [1234] [0] Part 2 /var/tmp/path
example text [1234] [0] Part 3 /var/tmp/path
example text [1234] [0] Some Text more text
example text [1235] [0] Part 4 /var/tmp/path
example text [1235] [0] Part 5 /var/tmp/path
example text [1236] [0] Part 6 /var/tmp/path
example text [1236] [0] other text foo bar

我有另一个文本文件,用户可以在其中写入零件。 所以它看起来像这样:

Part 2
Part 4
Part 6

我需要一个 grep,所以第二个文件被读取并搜索第一个括号中的数字,并将它们保存到一个变量中

在示例中,我需要获取输出

1234
1235
1236 

并且它应该在一个变量中以用于进一步的工作

到目前为止我用

试过了
grep -F -f parts.txt search.log

但我不知道如何不显示第 2、4 和 6 部分的行,而只显示第一个括号内的数字

不确定是否只有一个 grep 语句可以完成这项工作,但一个小循环可以。

cat file2 |while read line
do
   grep $line file1|awk '{print }'|sed 's/\[//g'|sed 's/\]//g' >> tempfile
done

现在可以进一步使用临时文件或代替临时文件,您可以通过

将其放入变量中
abcd="$abcd (grep $line file1|awk '{print }'|sed 's/\[//g'|sed 's/\]//g')"

这是一种方法。

myparts=$(grep -F -f parts.txt search.log | awk -F'[][]' '{print }' | sort | uniq)

parts.txt是用户写入零件编号的文件。

grep returns 部件号匹配的行。 awk 使用 [] 作为分隔符来提取它们之间的第一个单词