example.txt 在下面
Restaurant: McDonalds
City: Miami
State: Florida
Address: 123 Biscayne Blvd
Phone: 911
Restaurant: 5 guys
City: Atlanta
State: Georgia
Address: 123 Peachtree Rd
Phone: 911
Restaurant: KFC
City: NYC
State: NY
Address: 123 Madison Square
Phone: 911
Run Code Online (Sandbox Code Playgroud)
我使用 bash 脚本,假设我想从上面的文件中按名称搜索餐厅。询问用户输入餐厅名称,它应该打印有关该餐厅的信息(5 行)。
awk '/McDonalds/> /KFC/' example.txt
Run Code Online (Sandbox Code Playgroud)
我知道上面的代码行将打印与模式“麦当劳”和“肯德基”匹配的整行,但这只会打印文本文件中的第一行,而不是有关该餐厅的其余信息。我如何告诉它仅从用户输入的餐厅名称中打印所有信息(5 行)?
gle*_*man 15
使用 awk,您可以更改记录分隔符。默认情况下它是一个换行符,所以文件的每一行都是一条记录。如果将RS变量设置为空字符串,awk 将认为记录由空行分隔:
awk -v name="KFC" -v RS="" '$0 ~ "Restaurant: " name' example.txt
Run Code Online (Sandbox Code Playgroud)