如何使用awk删除下划线字符

use*_*294 1 awk

我有一个文件如下:

This is an _PLUTO_
This is _PINEAPPLE_
This is _ORANGE_
This is _RICE_
Run Code Online (Sandbox Code Playgroud)

我使用下面的代码来提取输出:

awk '{ print "Country: "  $NF }'  report.txt   
Run Code Online (Sandbox Code Playgroud)

输出:

Country: _PLUTO_
Country: _PINEAPPLE_
Country: _ORANGE_
Country: _RICE_
Run Code Online (Sandbox Code Playgroud)

如何删除所有下划线,以便我的输出如下所示:

Country: PLUTO
Country: PINEAPPLE
Country: ORANGE
Country: RICE
Run Code Online (Sandbox Code Playgroud)

fil*_*den 8

您可以使用此代码段:

$ awk '{ gsub("_", "", $NF); print "Country: " $NF }' report.txt
Country: PLUTO
Country: PINEAPPLE
Country: ORANGE
Country: RICE
Run Code Online (Sandbox Code Playgroud)

请注意,gsub()将执行就地修改,因此它会将替换结果存储回$NF, 在您的情况下。

如果您使用的是 GNU awk,则可以gensub()改为使用,这稍微简单一些:

$ gawk '{ print "Country: " gensub("_", "", "g", $NF) }' report.txt
Country: PLUTO
Country: PINEAPPLE
Country: ORANGE
Country: RICE
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅gsub()gensub() 的GNU awk 文档。