【问题标题】:Parsing a conf file in bash [closed]在bash中解析一个conf文件[关闭]
【发布时间】:2019-06-23 21:01:18
【问题描述】:

这是我的配置文件

#comment 1
--longoption1

#comment 2
--longoption2

#comment 3
-s   

#comment 4
--longoption4

我想编写一个 bash 脚本来读取这个 .conf 文件,跳过 cmets 并像这样序列化命令行选项。

./binary --longoption1 --longoption2 -s --longoption4

【问题讨论】:

  • --longoption3 是错字吗?
  • 呃。是的。

标签: linux bash awk sed grep


【解决方案1】:

使用this post on sed,您只需将输出从 sed 传送到 xargs:

sed -e 's/#.*$//' -e '/^$/d' inputFile | xargs ./binary

正如 Wiimm 所指出的,xargs 可能对很多参数都很挑剔,它可能会将其拆分为对 binary 的多次调用。直接使用 sed 可能会更好:

./binary $(sed -e 's/#.*$//' -e '/^$/d' inputFile)

【讨论】:

  • xargs 真的会序列化这些行吗?
  • @user11689504:将./binary 替换为echo ./binary 或仅echo 并尝试一下。
  • @Cyrus 我是如何测试它的 ;)
  • 它在这里工作,但语义上 xargs 的使用是错误的(或棘手的),因为 ./binary 可能被多次调用。更好:./binary $( sed ...).
  • 我们是否不需要用空格替换换行符才能在没有xargs 的情况下工作?我正在这样使用它。 CHROMIUM_FLAGS=$(sed -e 's/#.*$//' -e '/^$/d' chrome_flags.conf | xargs)
猜你喜欢
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 2021-02-07
  • 1970-01-01
  • 2012-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多