gpt4 book ai didi

linux - 如何在linux shell脚本中获取预期的字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:51 26 4
gpt4 key购买 nike

我需要删除除字符“[ ]”中带有的字符串之外的所有行。
输入文件:ODBC.ini

[ODBC Data Sources]

odbcname = MyODBC 3.51 Driver DSN
[odbcname]

Driver = /usr/lib/odbc/libmyodbc.so
Description = MyODBC 3.51 Driver DSN
[Default]

预期输出:ODBC.ini

[ODBC Data Sources]

[odbcname]

[Default]

在删除这个旧的之后还需要不同的 dsn 名称。提前致谢

最佳答案

sed 就地 (-i) 编辑:

sed -Ei '/\[[^]]*\]|^[[:blank:]]*$/ !d' ODBC.ini
  • \[[^]]*\] 匹配具有 []

  • 的行
  • ^[[:blank:]]*$ 匹配空白行或仅包含空格的行

  • !d 删除不匹配的行

类似地,只打印 awk 中匹配的行:

awk '/\[[^]]*\]|^[[:blank:]]*$/' ODBC.ini

最近的 GNU awk 有适当的编辑选项:

awk -i inplace '/\[[^]]*\]|^[[:blank:]]*$/' ODBC.ini

POSIX-ly:

awk '/\[[^]]*\]|^[[:blank:]]*$/' ODBC.ini >ODBC_temp.ini && mv ODBC{_temp,}.ini

示例:

$ sed -E '/\[[^]]*\]|^[[:blank:]]*$/ !d' file.txt
[ODBC Data Sources]

[odbcname]

[Default]


$ awk '/\[[^]]*\]|^[[:blank:]]*$/' file.txt
[ODBC Data Sources]

[odbcname]

[Default]

关于linux - 如何在linux shell脚本中获取预期的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39711811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com