替换文件中以 # 开头的单词或字符串。
例如,这是包含以下几行的文件:
$ cat file.txt
#apple sd#kf #banana adfe
#apple we#re #banana cow
Run Code Online (Sandbox Code Playgroud)
这是预期的输出
$ cat output.txt
fruit=apple sd#kf fruit=banana adfe
fruit=apple we#re fruit=banana cow
Run Code Online (Sandbox Code Playgroud)
当我使用以下时
awk '{for (i=1; i<=NF; i++) $i~/^#/ && $i="fruit="$i }1'
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
fruit=#apple sd#kf fruit=#banana adfe
fruit=#apple we#re fruit=#banana cow
Run Code Online (Sandbox Code Playgroud)
当我使用以下时
sed 's/^#/fruit=/g'
Run Code Online (Sandbox Code Playgroud)
我明白了
fruit=apple sd#kf #banana adfe
fruit=apple we#re #banana cow
Run Code Online (Sandbox Code Playgroud)
如何使用 awk、sed、grep 获得预期结果?
断言^字符串的开头,这就是为什么您只看到一个替换。
您可以替换^by\B来断言非字边界。
sed -E 's/\B#/fruit=/g' file
Run Code Online (Sandbox Code Playgroud)
请注意,在这种情况下,它也可以匹配单个#
如果后面应该有一个单词字符,您可以使用捕获组并匹配至少一个单词字符。
sed -E 's/\B#([[:alnum:]_])/fruit=\1/g' file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |