我尝试使用 bash 在 oracle linux 8.6 中使用模式取消注释文件中的特定行。某些行上的前导空格未被删除。我尝试使用 sed 和 grep 取消注释注释行以匹配模式。我需要精确匹配输出中的两个数字。文件中每列(共 2 列)有一个单词,每个单词都有数字。
例如: column1:pd 19 _ORA column2:svg 38。
我需要取消注释完全匹配 19 和 38 的行,但不包含 190、1900 或 019 等,例如,
#pd19_ORA svg37
#pd199_ORA svg388
代码:
sed -n '/\<19\>/,+1p' cmfile|grep '38'|sed -i '/38/s/^#//g' cmfile
文件内容:
#pd19_ORA svg38
#pd19_ORA sil38
#pd29_ORA sil37
使用 sed 和 inplace 后第一行仍然被注释,但第二行的注释被删除。
输出:
#pd19_ORA svg38
pd19_ORA sil38
#pd29_ORA sil37
如何删除第一行带有前导空格的注释而不删除前导空格?
预期输出:
pd19_ORA svg38
pd19_ORA sil38
#pd29_ORA sil37