这是另一个UNIX命令行,它可能比其他选项性能更好,因为您可以“寻找”性能良好的“块大小”。为了使这种方法更可靠,您需要知道每个X字符中至少有一个空格,其中X是您的任意“块大小”。在下面的示例中,我选择了1024个字符的“块大小”。
fold -w 1024 -s corpus.txt | sed 's/<unk>/<raw_unk>/g' | tr '/n' '/0'
在这里,fold 最多可以抓取1024个字节,但是-s可以确保它自上次中断以来至少有一个中断在一个空格上中断。
sed命令是您的命令,可以执行您期望的操作。
然后,tr命令将“展开”文件,将插入的换行符恢复为空。
您应该考虑尝试更大的块大小,以查看其执行速度是否更快。对于fold的-w选项,您可以尝试使用10240和102400和1048576而不是1024。
这是一个按步骤分解的示例,该步骤将所有N都转换为小写:
[root@alpha ~]# cat mailtest.txt
test XJS C4JD QADN1 NSBN3 2IDNEN GTUBE STANDARD ANTI UBE-TEST EMAIL*C.34X test
[root@alpha ~]# fold -w 20 -s mailtest.txt
test XJS C4JD QADN1
NSBN3 2IDNEN GTUBE
STANDARD ANTI
UBE-TEST
EMAIL*C.34X test
[root@alpha ~]# fold -w 20 -s mailtest.txt | sed 's/N/n/g'
test XJS C4JD QADn1
nSBn3 2IDnEn GTUBE
STAnDARD AnTI
UBE-TEST
EMAIL*C.34X test
[root@alpha ~]# fold -w 20 -s mailtest.txt | sed 's/N/n/g' | tr '\n' '\0'
test XJS C4JD QADn1 nSBn3 2IDnEn GTUBE STAnDARD AnTI UBE-TEST EMAIL*C.34X test
如果文件末尾有换行符,则需要在该文件的末尾添加换行符,因为tr命令将删除它。