У меня есть файл конфигурации, и мне нужно удалить комментарии, начиная с # до конца строки. Но это не должно влиять на значения в двойных / одинарных кавычках.
Мой входной файл:
# comment1
# comment2
#hbase_table_name=mytable # hbase table.
hbase_table_name=newtable # hbase table.
hbase_txn_family=txn
app_name= "cust#100" # Name of the application
app_user= 'all#50,all2#100' # users
hbase.zookeeper.quorum=localhost
zookeeper.znode.parent=/hbase-secure
hbase.zookeeper.property.clientPort=2181
Команда perl, которую я пытаюсь
perl -0777 -pe ' s/^\s*$//gms ; s/#.*?$//gm; s/^\s*$//gms;s/^$//gm' config.txt
Вывод, который я получаю,
hbase_table_name=newtable
hbase_txn_family=txn
app_name= "cust
app_user= 'all
hbase.zookeeper.quorum=localhost
zookeeper.znode.parent=/hbase-secure
hbase.zookeeper.property.clientPort=2181
Но необходим вывод
hbase_table_name=newtable
hbase_txn_family=txn
app_name= "cust#100"
app_user= 'all#50,all2#100'
hbase.zookeeper.quorum=localhost
zookeeper.znode.parent=/hbase-secure
hbase.zookeeper.property.clientPort=2181
Я ищу bash решение с использованием любых инструментов - awk или perl, который может решить эту проблему.
Редкий сценарий может быть с записью конфигурации, такой как
app_user= 'all#50,all2#100' # users - "all" of them
, и результат должен быть app_user= 'all#50,all2#100'