我正在尝试使用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命令实现它?
答案 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=/'