如何使用awk/cut获取有空间的列数据

use*_*680 5 sed awk cut

我有以下格式的数据:

 16 SQL*Plus                            vilconv1                  dox-conv2
 16 TOAD background query session       Disha                     WORKGROUP\AD
Run Code Online (Sandbox Code Playgroud)

现在我想按列获取数据,我使用以下命令

awk '{print $1,$2}' 
Run Code Online (Sandbox Code Playgroud)

但由于第 2 列有空格,它给了我以下输出:

16 SQL*Plus      
  16 TOAD
Run Code Online (Sandbox Code Playgroud)

而我想要的是:

16 SQL*Plus  
   16 TOAD background query session   
Run Code Online (Sandbox Code Playgroud)

小智 2

如果列由制表符分隔,您可以指定制表符作为字段分隔符。这将阻止 awk 将空格视为单独列的默认行为。

cat <data file> | awk -F"\t" '{print $1, $2}'

root@ubuntu32:/tmp# cat testtext | awk -F"\t" '{print $1, $2}'
16 SQL*Plus
16 TOAD background query session
Run Code Online (Sandbox Code Playgroud)

  • 无需鞭打猫;awk 可以传递一个文件名进行输入... (2认同)