Regex 如何在单词中添加正斜杠

Regex 如何在单词中添加正斜杠,regex,awk,scripting,Regex,Awk,Scripting,有没有办法给一个单词加上正斜杠? 像这样 测试->/测试/ 我有这个档案 switch1 Ethernet13 1 4 5 switch1 Ethernet14 1 4 5 switch1 Ethernet15 1 4 5 switch1 Ethernet8 1 4 5 switch1 Ethernet16 1 4 5 switch1 Ethernet1 2002 2

有没有办法给一个单词加上正斜杠? 像这样

测试->/测试/

我有这个档案

switch1  Ethernet13  1     4     5  
switch1  Ethernet14  1     4     5  
switch1  Ethernet15  1     4     5  
switch1  Ethernet8   1     4     5  
switch1  Ethernet16  1     4     5  
switch1  Ethernet1   2002  2697  2523  
switch1  Ethernet17  2002  2576  2515  
想这样改变它

/switch1/  /Ethernet13/  /1/     /4/     /5/  
/switch1/  /Ethernet14/  /1/     /4/     /5/  
/switch1/  /Ethernet15/  /1/     /4/     /5/  
/switch1/  /Ethernet8/   /1/     /4/     /5/  
/switch1/  /Ethernet16/  /1/     /4/     /5/  
/switch1/  /Ethernet1/   /2002/  /2697/  /2523/    
/switch1/  /Ethernet17/  /2002/  /2576/  /2515/  
我寻找这种格式的原因是我可以使用 它需要找到与awk匹配的模式。 我试过了,但只打印了0

awk '{print "\/$1\/}'    
感谢您的任何想法或建议。

我将使用以下sed命令:


它用斜杠包围所有非空格字符组[^\t]\+。

您可以使用以下命令

sed -r 's!(\S+)!/\1/!g' file.txt
如果您的awk具有gensub功能

awk '{ print gensub(/(\w+)/, "/\\1/", "g") }' file.txt
关于gensub

gensubregexp,替换,如何[,目标]

gensub是一个一般的代换函数。。。[具有]比标准sub和gsub功能更多的功能。。。[具有]在替换文本中指定regexp组件的能力


使用暴力和无知,您可以使用:

awk '{ for (i = 1; i <= NF; i++) $i = "/"$i"/"; print }'
这将用斜线包围的值替换每个字段。唯一需要注意的是,它会弄乱字段之间的间距,但是如果要使用输出进行搜索,这不会是问题

如果您希望每个字段位于单独的行中,这可能对拟定用途更有用,那么:

awk '{ for (i = 1; i <= NF; i++) print "/"$i"/"; }'

请注意,不平衡的双引号是一个问题。当我在试图帮助其他人排除故障时发现gensub时,这是一个很好的发现。。。当我发现他们没有呆呆的时候,我很失望。。。感谢您的链接和gensub可能不在这里的提示。为了保留空间,您可以使用awk'{gsub/[^]+/,\/&\/}1'文件,这是对所有答案的感谢。我是新来的。尽管,帮助页面说我不应该说谢谢,但感觉很奇怪。
awk '{ for (i = 1; i <= NF; i++) print "/"$i"/"; }'