获取两个精确管道之间的字符unix中的字符

时间:2014-05-29 12:52:53

标签: regex bash unix awk sed

我需要从文件中查找第二第三 |(管道)字符之间的所有字符。

假设我们有一个带有如下字符串的文件(两行):

abc123 | def123 | ghi123 | jkl123 | mno123
abc123 | def123 | jkl123 | ghi123 | mno123

使用grep / sed / awk命令后,我应该

ghi123
jkl123 

我很感激任何线索或帮助。

1 个答案:

答案 0 :(得分:3)

如果您想要获得第三个元素,可以尝试使用:

echo "abc123 | def123 | ghi123 | jkl123 | mno123" | awk -F " | " '{print $5}'

或者:

echo "abc123 | def123 | ghi123 | jkl123 | mno123" | cut -d '|' -f 3 | tr -d ' '

输出:

ghi123

对于|之间包含多个单词的字符串,您可以使用:

echo "abc123 | def123 | foo bar | jkl123 buz | mno123" | cut -d '|' -f 3 | sed -e 's/^ //' | sed -e 's/ $//'

输出:

foo bar

请注意,sed -e 's/^ //' | sed -e 's/ $//'用于删除第一个和最后一个空格,因为tr -d ' '会删除字符串中的所有空格。