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"/"; }'