Я был очень озадаченным следующим egrep поведением:
У меня есть файл LF-terminated. Когда я grep для $ '\n'
все линии возвращен как ожидалось. Но все линии возвращены, когда я grep для $ '\r\n'
даже при том, что у меня нет возвратов каретки в файле. Почему делает grep, ведут себя этим озадачивающим способом?
[[email protected] myplay2]$ cat sample.txt
a
b
n
c
[[email protected] myplay2]$ file sample.txt
sample.txt: ASCII text
[[email protected] myplay2]$ egrep $'\n' sample.txt
a
b
n
c
[[email protected] myplay2]$ egrep $'\r\n' sample.txt
a
b
n
c
Кроме того, когда я преобразовываю файл в законченный CRLF, egreping для новых строк соответствует всем линиям, но egreping для carriagereturn+newline возвращает пустые строки. Почему?
[[email protected] myplay2]$ unix2dos sample.txt
unix2dos: converting file sample.txt to DOS format ...
[[email protected] myplay2]$ file sample.txt
sample.txt: ASCII text, with CRLF line terminators
[[email protected] myplay2]$ egrep $'\n' sample.txt
a
b
n
c
[[email protected] myplay2]$ egrep $'\r\n' sample.txt
[[email protected] myplay2]$
И наконец, если я egrep '\n'
с сильными кавычками, но без спасения C-стиля, я становлюсь достойным "n" даже при том, что нет никакой наклонной черты влево. Почему?
[[email protected] myplay2]$ egrep '\n' sample.txt
n