【发布时间】:2018-09-07 08:04:06
【问题描述】:
我想用 'grep' 命令捕获所有部分。但是,我无法将我的表达式与第一行中的文件匹配,但在另一行中表现良好。我发现问题可能与文件类型有关,但如果我不允许修改文件类型,我不知道如何解决。我正在乞求解决方案。谢谢。
$> file test.ini
test.ini: UTF-8 Unicode (with BOM) text
$> cat test.ini
[isp_info]
reg_img_widthm1 = 100
[isp_blc0]
reg_blc_enable = 0
[isp_dpc0]
reg_dpc_enable = 0
$> grep '^\[.*]$' test.ini
[isp_blc0]
[isp_dpc0]
然而
$> file test.ini.ascii
test.ini.ascii: ASCII text
$> cat test.ini.ascii
[isp_info]
reg_img_widthm1 = 100
[isp_blc0]
reg_blc_enable = 0
[isp_dpc0]
reg_dpc_enable = 0
$> grep '^\[.*]$' test.ini.ascii
[isp_info]
[isp_blc0]
[isp_dpc0]
【问题讨论】:
-
你不应该逃避第二个
]吗? -
如果您将 BOM 匹配为可选序列怎么办?
grep -E $'^(\xEF\xBB\xBF)?\[.*]$' file? -
第一种情况可能是第一行行尾有字符,试试
cat -e test.ini -
使用
grep -E $'^(\xEF\xBB\xBF)?\[.*]$'效果很好,你能为我解释一下吗? -
$> cat -e test.ini显示M-oM-;M-?[isp_info]$