剪切与文本文件中的模式匹配的特定单词

时间:2015-05-20 08:10:38

标签: shell grep cut

我正在尝试使用shell脚本从与模式匹配的文本文件中提取单词。例如,如果一行包含

This is a sample text to illustrate my scenario text=info id=2342
Second line to illustrate text=sample id=q2312

我希望输出像

text=info id=2342
text=sample id=q2312

请告诉我如何使用cut / grep命令实现它?

3 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

grep -P -o 'text=\S+ id=\S+'

-P的{​​{1}}标志启用perl正则表达式。 grep将匹配所有非空格字符,\S+仅输出匹配的部分。

假设您需要获取字段“text”和“id”值。根据需要修改正则表达式。对于perl正则表达式,请参阅here或扩展正则表达式,请参阅-o

答案 1 :(得分:2)

grep -oP应该有效:

grep -oP '\b(\w+=\w+(\s+|$))+' file
text=info id=2342
text=sample id=q2312

答案 2 :(得分:1)

使用剪切,你需要处理额外的(从第一个剪切=并添加文字=):

echo "text=$(echo "This is a sample text to illustrate my scenario text=info id=2342" | cut -d= -f2-)"

使用sed:

echo "This is a sample text to illustrate my scenario text=info id=2342" | sed 's/.* text=/text=/'