如何从命令输出中获得第二列?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我的命令输出如下所示:

1540 "A B"
   6 "C"
 119 "D"

第一列始终是一个数字,后跟一个空格,然后是一个双引号字符串。

我的目的是仅获得第二列,如:

"A B"
"C"
"D"

我打算用来<some_command> | awk '{print $2}'完成这一点。但问题是,第二列中的某些值包含空格,这恰好是用于awk分隔字段的默认分隔符。因此,输出是混乱的:

"A
"C"
"D"

如何清晰地得到第二列的值(带有配对引号)?

提问于
用户回答回答于

或者使用sed&regex。

<some_command> | sed 's/^.* \(".*"$\)/\1/'
用户回答回答于

使用-F [field separator]分线"s:

awk -F '"' '{print $2}' your_input_file

或从输入

<some_command> | awk -F '"' '{print $2}'

输出:

A B
C
D

扫码关注云+社区