打印AWK分隔的AWK所有字段

Kyl*_*ndt 25 awk gawk

有没有办法打印OFS分隔的所有记录而不输入每个列号.

#Desired style of syntax, undesired result
[kbrandt@glade: ~] echo "1 2 3 4" | gawk 'BEGIN { OFS=" :-( "}; {print $0}'        
1 2 3 4

#Desired result, undesired syntax
[kbrandt@glade: ~] echo "1 2 3 4" | gawk 'BEGIN { OFS=" :-) "}; {print $1,$2,$3,$4}'
1 :-) 2 :-) 3 :-) 4
Run Code Online (Sandbox Code Playgroud)

Ger*_*cia 34

这是第一种风格的变体:

echo "1 2 3 4" | gawk 'BEGIN { OFS=" :-( "}; {$1=$1; print $0}'
Run Code Online (Sandbox Code Playgroud)

结果:

1 :-( 2 :-( 3 :-( 4
Run Code Online (Sandbox Code Playgroud)

说明:

$1=$1是重建记录,使用当前OFS(你也可以看到http://www.gnu.org/software/gawk/manual/gawk.html#Changing-Fields)

更新:

(由@EdMorton和@steve建议)这是awk命令的简短版本,它在命令行中设置OFS,并利用print $0默认操作:

awk -v OFS=" :-( " '{$1=$1}1'
Run Code Online (Sandbox Code Playgroud)

  • @Thor` $ 1 = $ 1; 1`将打印两次具有非零/ null $ 1值的每一行,这可能是不希望的.你可以做`$ 1 = $ 1,1`但是正如我们最近发现的那样,如果没有一些调查就没有人知道这意味着什么,所以应该避免:-). (2认同)