打印与AWK所有字段通过OFS分离(Print all Fields with AWK separa

2019-07-04 12:21发布

有没有一种方法来打印由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

Answer 1:

这是第一个风格的变化:

echo "1 2 3 4" | gawk 'BEGIN { OFS=" :-( "}; {$1=$1; print $0}'

结果:

1 :-( 2 :-( 3 :-( 4

说明:

$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'


Answer 2:

然而同等学历;

$ echo "1 2 3 4" | sed 's/ /:-)/g'

下面是使用awk另一种选择:

$ echo "1 2 3 4" | awk '{ gsub(/\s/, ":-)")}1' 


文章来源: Print all Fields with AWK separated by OFS
标签: awk gawk