如何向单词添加正斜杠

时间:2014-05-28 23:03:37

标签: regex awk scripting

有没有办法为单词添加正斜杠? 像这样

测试 - > / test /

我有这个文件,

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\/}'    

感谢您的任何想法或建议。

4 个答案:

答案 0 :(得分:2)

我会使用以下sed命令:

sed 's~\([^ \t]\+\)~/\1/~g' file.txt

它用斜杠围绕所有非空格字符组([^ \t]\+)

答案 1 :(得分:2)

您可以使用以下内容。

sed -r 's!(\S+)!/\1/!g' file.txt

答案 2 :(得分:2)

如果您的awk具有gensub()功能......

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

关于gensub

答案 3 :(得分:1)

使用蛮力和无知,你可以使用:

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

这将使用斜杠包围的值替换每个字段。唯一需要注意的是它会弄乱字段之间的间距,但如果您要使用输出进行搜索,则不会出现问题。

如果您希望每个字段位于单独的行上(这可能对建议的用途更有用),那么:

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