我目前正在编写一个 shell 脚本,将值与其标识符(从 grep 检索)分开。
例如,如果我 grep 某个文件,我将检索以下信息:
value1 = 1
value2 = 74
value3 = 27
我想知道我可以使用什么 UNIX 命令来获取信息并将其转换为以下格式:
1 74 27
答案1
答案2
将所有内容删除到第一个=
和后续的空白,将换行符转换为空格,并打印最后的换行符:
… | sed 's/^[^=]*= *//' | tr '\n' ' '; echo
答案3
简单点怎么样
cut -d= -f2 /tmp/file | xargs printf "%s "
这是有效的,因为:
- 如果 shell 内置的“printf”获得的参数多于输出字符串中指定的参数,它将“重复自身”
- xargs 会将输入中的行转换为传递给 printf 的命令行上的单词
- cut 将使用 = 作为分隔符并仅传递其后面的内容
- 当然, printf 字符串将显示输出,并且由于没有添加显式新行,因此将每个字符串附加到前一行的末尾。