所以我有以下脚本(只是一个测试)
#!/bin/bash
for file in *
do
echo $file
done
我正在尝试在文件周围添加括号。我也假装我不知道变量文件的全名。
cat sc.sh | sed 's/fi*/(&)/g'
#!/bin/bash
(f)or (fi)le in *
do
echo $(fi)le
done
所以基本上我试图匹配以fi开头的单词并在它们周围添加括号。我究竟做错了什么?我尝试了很多变化,但它没有用。从我可以看到命令匹配任何f或fi并在它们周围添加括号但不是整个单词。为什么?
非常感谢任何帮助。
答案 0 :(得分:1)
你的正则表达式fi*
正在寻找f后跟0或者更多的i。你可能想要更像这样的东西:
cat tmp | sed 's/\bfi[^ ]*/(&)/g'
\bfi
查找单词边界(即单词的开头),后跟'fi'。然后[^ ]*
匹配单词中剩余的(非空格)字符。