我想 grep 一个正则表达式。我正在搜索的模式可能会在一行中出现多次。如果该模式出现多次,我想用逗号分隔每次出现的情况,并仅在新文件中打印匹配项而不是整行。如果它没有出现在一行中我想打印na
例子。我想使用这个正则表达式来查找模式中的数字:[12.123.1.3]。
grep -oh "\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]" 'filename'
Run Code Online (Sandbox Code Playgroud)
输入文件(input.txt)
blabla [11.335.2.33] xyuoeretrete [43.22.11.88] jfdfjkfbs [55.66.77.88]
blabla [66.223.44.33]
foo bar
blabla [1.2.33.3] xyuoeretrete [42] bla[1.32.2.4]
Run Code Online (Sandbox Code Playgroud)
新文件(output.csv)中的预期结果:
11.335.2.33,43.22.11.88,55.66.77.88
66.223.44.33
n.a.
1.2.33.3,1.32.2.4
Run Code Online (Sandbox Code Playgroud)
注:我使用Ubuntu