有没有办法为单词添加正斜杠? 像这样
测试 - > / 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\/}'
感谢您的任何想法或建议。
答案 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
gensub(regexp, replacement, how [, target]) #
gensub()
是一般替代函数... [有]比标准sub()
和gsub()
函数更多的功能... [有]能力在替换文本中指定正则表达式的组件
答案 3 :(得分:1)
使用蛮力和无知,你可以使用:
awk '{ for (i = 1; i <= NF; i++) $i = "/"$i"/"; print }'
这将使用斜杠包围的值替换每个字段。唯一需要注意的是它会弄乱字段之间的间距,但如果您要使用输出进行搜索,则不会出现问题。
如果您希望每个字段位于单独的行上(这可能对建议的用途更有用),那么:
awk '{ for (i = 1; i <= NF; i++) print "/"$i"/"; }'