如何将数值与标识符分开

如何将数值与标识符分开

我目前正在编写一个 shell 脚本,将值与其标识符(从 grep 检索)分开。

例如,如果我 grep 某个文件,我将检索以下信息:

value1 = 1
value2 = 74
value3 = 27

我想知道我可以使用什么 UNIX 命令来获取信息并将其转换为以下格式:

1 74 27

答案1

您可以使用像这样 :

grep "pattern" file.txt | awk '{printf "%s ", $3}'

取决于您的用途grep,但您应该考虑使用awkfor格雷普本身:

awk '/pattern/{printf "%s ", $3}' file.txt

另一种方式是利用 分词

echo $(awk '/pattern/{print $3}' file.txt)

编辑: 我有一个更有趣的方法加入价值观:

awk '/pattern/{print $3}' file.txt | paste -sd " " -

答案2

将所有内容删除到第一个=和后续的空白,将换行符转换为空格,并打印最后的换行符:

… | sed 's/^[^=]*= *//' | tr '\n' ' '; echo

答案3

简单点怎么样

cut -d= -f2 /tmp/file | xargs printf "%s "

这是有效的,因为:

  1. 如果 shell 内置的“printf”获得的参数多于输出字符串中指定的参数,它将“重复自身”
  2. xargs 会将输入中的行转换为传递给 printf 的命令行上的单词
  3. cut 将使用 = 作为分隔符并仅传递其后面的内容
  4. 当然, printf 字符串将显示输出,并且由于没有添加显式新行,因此将每个字符串附加到前一行的末尾。

相关内容