**已关闭。**此问题不符合Stack Overflow guidelines。它目前不接受回答。
这个问题似乎不是关于在help center定义的范围内编程。
12天前关闭
Improve this question
我正在使用swaymsg -t get_inputs | grep
过滤输入设备信息,但我注意到grep
正在改变文本格式。
使用grep:
$ swaymsg -t get_inputs | grep -i touch
"identifier": "2:7:SynPS\/2_Synaptics_TouchPad",
"name": "SynPS\/2 Synaptics TouchPad",
"type": "touchpad",
没有grep:
$ swaymsg -t get_inputs
Input device: SynPS/2 Synaptics TouchPad
Type: Touchpad
Identifier: 2:7:SynPS/2_Synaptics_TouchPad
Product ID: 7
Vendor ID: 2
Libinput Send Events: enabled
为什么会发生这种不寻常的行为,有没有一种方法可以让“grep”保持文本的原样?
2条答案
按热度按时间gkl3eglg1#
改变输出的不是
grep
,而是swaymsg
。它检测到输出不是终端,并切换到JSON输出。尝试指定--pretty
选项。t3irkdon2#
swaymsg
可以处理纯文本和json
。它只是默认为纯文本时,stdout
是一个tty
。您可以使用
-p
强制纯文本输出您可以使用
-r
强制json
输出json
输出在输出到文件> your_file.json
或使用工具(如jq
)解析单个json
组件时非常有用,在您的情况下,单独抓取name
,type
或identifier
而不是awk
输出非常简单。