Jui*_*icy 0 grep terminal regular-expression
这是grep
我运行的命令的输出:
[user@localhost] : ~/Documents/challenge $ grep -i -e ".\{32\}" fileA fileB
fileA:W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl
fileB:observacion = new Observacion();
fileB:observacion.setCodigoOf(ordenBO.getCodigo());
fileB:observacion.setDetalle(of.getObservacion().getSolicitante());
fileB:observacion.setTipoObservacion(TipoObservacionOrdenFleteMaestro.SOLICITANTE);
fileB:observacion.setProceso(TipoProcesoObservacionMaestro.MODIFICACION);
fileB:observacion.setFecha(Utiles.getFechaSistema());
fileB:java.util.Date fechaHora = Calendar.getInstance().getTime();
fileB:observacion.setUsuarioCrecion(usuarioSesionado.getUsuario().getUsuario());
fileB:daoObservacion.agregaObservacion(observacion);
Run Code Online (Sandbox Code Playgroud)
我正在两个文件中寻找 32 个字符的长字符串:fileA
和fileB
. 重要的是,只fileA
包含 32 个字符,没有换行符:
[user@localhost] : ~/Documents/challenge $ hexdump -C fileA
00000000 57 30 6d 4d 68 55 63 52 52 6e 47 38 64 63 67 68 |W0mMhUcRRnG8dcgh|
00000010 45 34 71 76 6b 33 4a 41 39 6c 47 74 38 6e 44 6c |E4qvk3JA9lGt8nDl|
00000020
Run Code Online (Sandbox Code Playgroud)
我的grep
命令的问题在于它返回任何超过 32 个字符的行。我怎样才能让它只返回32 个字符的行。我的问题是我无法修改我的正则表达式以匹配换行符,因为没有换行符。
我的预期输出很简单:
fileA:W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl
Run Code Online (Sandbox Code Playgroud)
(注意:这是一个我已经用我丑陋的解决方案解决的挑战,但在这种情况下,我们只能使用grep
管道或重定向输出是不允许的)
这有效。 ^
表示行首,加上{32}
你已经拥有的,然后是$
行尾。
$ cat fileA fileB
12345678901234567890123456789012
123456789012345678901234567890123
12345678901234567890123456789012
123456789012345678901234567890124
$ grep -E "^.{32}$" fileA fileB
fileA:12345678901234567890123456789012
fileB:12345678901234567890123456789012
$
Run Code Online (Sandbox Code Playgroud)
正如@steeldriver 所指出的,posix grep 包含 -x,因此以下方法也适用: grep -xE ".{32}" fileA fileB
归档时间: |
|
查看次数: |
134 次 |
最近记录: |