1

我正在尝试针对包含data:string

示例字符串:(未提供敏感数据,它们已被修改)。

$H$9a...DcuCqC/rMVmfiFNm2rqhK5vFW1  
$H$9n...AHZAV.sTefg8ap8qI8U4A5fY91  
$H$9o...Bi6Z3E04x6ev1ZCz0hItSh2JJ/  
$H$9w...CFva1ddp8IRBkgwww3COVLf/K1 

我一直在研究如何针对另一个文件 grep 模式文件,并遇到了以下命令

grep -f strings.txt datastring.txt > output.txt  
grep -Ff strings.txt datastring.txt > output.txt

但不幸的是,这些命令不能成功运行,只能将少数结果打印到我的输出文件中。我认为这可能与 strings.txt 中包含的符号有关,但我不确定。任何帮助/建议都会很棒。

进一步提一下,我在 Windows 上使用 Cygwin(如果这是相关的)。

这是一个更新的示例:
strings.txt 包含以下内容:

$H$9a...DcuCqC/rMVmfiFNm2rqhK5vFW1  
$H$9n...AHZAV.sTefg8ap8qI8U4A5fY91  
$H$9o...Bi6Z3E04x6ev1ZCz0hItSh2JJ/  
$H$9w...CFva1ddp8IRBkgwww3COVLf/K1 

datastring.txt 包含以下内容:

$H$9a...DcuCqC/rMVmfiFNm2rqhK5vFW1:53491  
$H$9n...AHZAV.sTefg8ap8qI8U4A5fY91:03221  
$H$9o...Bi6Z3E04x6ev1ZCz0hItSh2JJ/:20521  
$H$9w...CFva1ddp8IRBkgwww3COVLf/K1:30142  

所以从技术上讲,所有的行都应该包含在 OUTPUT 文件中,但只有这一行被输出:

$H$9w...CFva1ddp8IRBkgwww3COVLf/K1:30142 

我只是不明白。

4

1 回答 1

1

您已经展示了cat -A strings.txt其他地方的输出,其中包括^M在每行末尾表示一个 CR(回车)字符:

截屏

这表明您的文件具有 Windows 行结尾 (CR LF),而不是grep预期的 Unix 行结尾(仅 LF)。

您可以dos2unix strings.txt使用unix2dos strings.txt.

或者,如果您的 Cygwin 环境中没有安装 dos2unix,您也可以使用sed.

sed -i 's/\r$//' strings.txt    # dos2unix
sed -i 's/$/\r/' strings.txt    # unix2dos
于 2019-10-19T03:54:48.323 回答