无法在Ubuntu中grep文件,匹配行为空?

无法在Ubuntu中grep文件,匹配行为空?,ubuntu,grep,Ubuntu,Grep,我有一个CSV文件,它由bash脚本解析,以便找到文件中给定ID的位置,作为通过JMeter跟踪进度的一种方法 我遇到问题的特定行由以下代码组成: egrep -n -C 2 '49156$' 以前我运行脚本没有问题,但是我认为字符编码或结束行字符发生了一些有趣的事情。像现在一样,当我运行这条线路时,我没有得到回报 如果我更改正则表达式以检查是否有额外字符,例如'49156.$”,那么在OSX和Ubuntu中会得到以下结果: OSX: 1307-node/49150 1308-node/491

我有一个CSV文件,它由bash脚本解析,以便找到文件中给定ID的位置,作为通过JMeter跟踪进度的一种方法

我遇到问题的特定行由以下代码组成:

egrep -n -C 2 '49156$'
以前我运行脚本没有问题,但是我认为字符编码或结束行字符发生了一些有趣的事情。像现在一样,当我运行这条线路时,我没有得到回报

如果我更改正则表达式以检查是否有额外字符,例如
'49156.$”
,那么在OSX和Ubuntu中会得到以下结果:

OSX:

1307-node/49150
1308-node/49153
1309:node/49156
1310-node/49159
1311-node/49162
1307-node/49150
1308-node/49153

1310-node/49159
1311-node/49162
Ubuntu:

1307-node/49150
1308-node/49153
1309:node/49156
1310-node/49159
1311-node/49162
1307-node/49150
1308-node/49153

1310-node/49159
1311-node/49162
我需要这个脚本在Ubuntu服务器上运行,所以我真的需要让它在Ubuntu服务器上运行,但是正如我所说,这个脚本在以前的CSV上运行得很好,我真的不确定最近的CSV是如何改变的

如果我使用
:set list查看VIM中的文件,我会看到以下内容:

node/49153$
node/49156$
node/49159$
node/49162$
node/49165$
我想用模式检查数字块而不是结束行字符:
'49156[^0-9]
,但这仍然会产生相同的结果:

1307-node/49150
1308-node/49153

1310-node/49159
1311-node/49162

除了上面提到的,我不确定下一步要测试什么。感谢您的建议:)

听起来您的文件可能使用CRLF(回车+换行)作为行尾,而不仅仅是LF(换行)。(例如,如果您的文件曾经在Windows机器上编辑过,可能会发生这种情况。)因此,我建议在其上运行
dos2unix
,以删除任何杂散的回车,并查看是否修复了它。

它肯定没有触及Windows机器,但是现在您提到了它,vim中的描述确实提到了
“path.csv”[dos]56159L,878008C
在底部,天知道怎么做。我试试看,谢谢@ruakh做到了,谢谢:D.发布答案,我会接受的。要明确的是,该文件是通过MySQL单列查询生成的,使用
-B-e“SELECT…”
命令行语法。我以前运行过它,我确信生成其他CSV时不会出现此问题,但很明显我的流程发生了一些变化。很酷,很高兴我能提供帮助。:-)