Rom*_*cea 8 linux bash ubuntu awk sed
我有一个像这样的字符串:
#
pap
Run Code Online (Sandbox Code Playgroud)
基本上转换为a \t#\n\tpap,我想用以下内容替换它:
#
pap
python
Run Code Online (Sandbox Code Playgroud)
转化为\t#\n\tpap\n\tpython.
sed在很多方面试过这个但是它不起作用可能是因为sed以不同的方式使用新的线条.我尝试过:
sed -i "s/\t#\n\tpap/\t#\tpython\n\tpap/" /etc/freeradius/sites-available/default
Run Code Online (Sandbox Code Playgroud)
...以及许多不同的其他方式,没有结果.我知道在这种情况下如何更换?
这可能适合你(GNU sed):
sed '/^\t#$/{n;/^\tpap$/{p;s//\tpython/}}' file
Run Code Online (Sandbox Code Playgroud)
如果一行仅包含\t#打印它,那么如果下一行仅包含\tpap打印它,那么用该行替换\tpython并打印它.
用 gawk 试试这一行:
awk -v RS="\0" -v ORS="" '{gsub(/\t#\n\tpap/,"yourNEwString")}7' file
Run Code Online (Sandbox Code Playgroud)
如果你想让sed 处理新行,你必须先阅读整个文件:
sed ':a;N;$!ba;s/\t#\n\tpap/NewString/g' file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12301 次 |
| 最近记录: |