Awk 搜索延伸到两行以上的字符串

Awk 搜索延伸到两行以上的字符串,awk,sed,grep,Awk,Sed,Grep,我在这样一个非常大的文件中搜索这个字符串,不知道新行从哪个位置开始。我的第一个想法是删除所有\n,但是文件超过了3 gb。。。我认为有一个聪明的方法可以做到这一点(sed,awk,…) 假设搜索字符串不能扩展到2行以上,则可以使用此awk: awk -v p="ABCDEFGH" 's $0 ~ p {print NR,s $0} {s=$0}' file 或者,您可以将每一行粘贴到下一行,并grep结果。这样,您必须创建一个文件,其大小是大输入的两倍 tail -n +

我在这样一个非常大的文件中搜索这个字符串,不知道新行从哪个位置开始。我的第一个想法是删除所有
\n
,但是文件超过了3 gb。。。我认为有一个聪明的方法可以做到这一点(sed,awk,…)


假设搜索字符串不能扩展到2行以上,则可以使用此
awk

awk -v p="ABCDEFGH" 's $0 ~ p {print NR,s $0} {s=$0}' file

或者,您可以
将每一行粘贴到下一行,并
grep
结果。这样,您必须创建一个文件,其大小是大输入的两倍

tail -n +2 file | paste -d '' file - > output.txt

> cat output.txt
efhashiviahjasjdjasd
hjasjdjasdoqkfoflABC
oqkfoflABCDEFGHqpclq
DEFGHqpclqpasdpapsda
pasdpapsda

> grep -n ABCDEFGH output.txt
3:oqkfoflABCDEFGHqpclq

请在您的问题中以代码的形式添加您的努力,然后让我们知道,强烈鼓励用户在他们的问题中添加努力,谢谢干杯。如果您可以限制字符串可以跨越的行数,那么您可以使用sed、awk快速解决问题。最大跨度为两行。
ggrep-i“ABCDEFGH”找到此字符串时要执行什么操作?打印出它所在的行?
tail -n +2 file | paste -d '' file - > output.txt

> cat output.txt
efhashiviahjasjdjasd
hjasjdjasdoqkfoflABC
oqkfoflABCDEFGHqpclq
DEFGHqpclqpasdpapsda
pasdpapsda

> grep -n ABCDEFGH output.txt
3:oqkfoflABCDEFGHqpclq