嗨,我有一个文件目录,每个文件都有多个语言、多行的文本字符串。使用grepwin,我想提取所有的英文文本字符串并保存到另一个文本文件中。通常,在每个文件中,英文文本都在开关/用例条件中,如下所示:
Default //English
bitmap 8 20 "bmp5/warning.bmp"
Ltext 5 1 11 "USB Device Overload"
LText 85 20 13 "USB"
Ltext 50 33 13 "Device Overload!"
Break
Case _French
bitmap 8 20 "bmp5/warning.bmp"
LTEXT 5 1 11 "Surcharge clé USB!"
LTEXT 45 30 13 "Surcharge clé USB"
Break 因为所有的英文文本总是介于‘默认’和‘中断’之间,我想使用这两个关键字作为标记。最后,两个关键字之间的所有文本都需要保存到另一个文本文件中。
有人能帮上忙吗。
谢谢各位
发布于 2014-11-27 14:09:02
通过grep。
$ grep -oPz '(?s)(?<=\n|^)Default\b[^\n]*\n\K.*?(?=\nBreak\b)' file
bitmap 8 20 "bmp5/warning.bmp"
Ltext 5 1 11 "USB Device Overload"
LText 85 20 13 "USB"
Ltext 50 33 13 "Device Overload!"若要将结果保存到另一个文件,需要使用输出重定向操作符。
grep -oPz '(?s)(?<=\n|^)Default\b[^\n]*\n\K.*?(?=\nBreak\b)' infile > outfile来自man grep
-P, --perl-regexp PATTERN is a Perl regular expression
-z, --null-data a data line ends in 0 byte, not newlinehttps://stackoverflow.com/questions/27172519
复制相似问题