在一部分线上使用awk字段分隔符,直到某个唯一字符

Duc*_*cki 0 awk sh

假设我有一个输入textFile.txt,其中包含:

0.3340     0.2333  0.1029     .0349  .2302 [ blah blah ] 
0.2223     0.2343  0.2394     .4395  .7943 [ blah2 blah2 ] 
Run Code Online (Sandbox Code Playgroud)

并且数字之间有可变数量的空白.

我想输出:

0.334,0.2333,0.1029,.0349,.2302 [ blah blah ]
0.2223,0.2343,0.2394,.4395,.7943 [ blah2 blah2 ] 
Run Code Online (Sandbox Code Playgroud)

进一步处理.

awk 'BEGIN { OFS = "," }{ print $1, $2, $3, $4, $5 }' textFile.txt 
Run Code Online (Sandbox Code Playgroud)

如何组合我想要的字段分隔符和搜索左括号,并告诉它输出左括号未修改后的内容?

Joh*_*024 5

根据示例输入,您需要在由多个空格分隔的字段之间使用逗号.如果是这种情况:

$ awk -F'  +' '$1=$1' OFS=, text.txt
0.3340,0.2333,0.1029,.0349,.2302 [ blah blah ] 
0.2223,0.2343,0.2394,.4395,.7943 [ blah2 blah2 ] 
Run Code Online (Sandbox Code Playgroud)

这个怎么运作:

  • -F' +'

    这告诉awk将两个或多个空格视为字段分隔符.

  • $1=$1

    这使awk认为该行已被更改.因此,awk将使用新的字段分隔符重新格式化输出中的行.

  • OFS=,

    这告诉awk使用逗号作为输出字段分隔符.