如何使用包含单引号、管道和后面带 / 的模式来 grep 一行?

如何使用包含单引号、管道和后面带 / 的模式来 grep 一行?

我有一个如下文件

'ABC'|filler|'Y'|'john/1'|'text'
'ABC'|filler|'Y'|'john1'|'te/xt'
'ABC'|filler|'N'|'mary/2'|'text'
'DEF'|filler|'N'|'jane/3'|'text'

我希望我的 grep 返回以下结果

'ABC'|filler|'Y'|john/1|'text'
'ABC'|filler|'N'|mary/2|'text'

其中条件是

  1. 包含单词 ABC
  2. 匹配“Y”或“N”的模式,并且管道后面应包含正斜杠

我目前陷入困境

wordY="'Y'|"

字N=“'N'|”

grep ABC 测试.txt | grep "$wordY|$wordN"

哪些正在返回

'ABC'|filler|'Y'|'john/1'|'text'
'ABC'|filler|'Y'|'john1'|'te/xt'    //i do not want this
'ABC'|filler|'N'|'mary/2'|'text'

我如何添加命令以返回第四列中带有正斜杠的结果值?

答案1

使用grep

$ grep -E "^'ABC'\|[^|]*\|'(Y|N)'\|'[[:alpha:]]+/" input_file
'ABC'|filler|'Y'|'john/1'|'text'
'ABC'|filler|'N'|'mary/2'|'text'

相关内容