首页 文章

英文/中文文本的awk / Sed解决方案?

提问于
浏览
0

我有一个文本文件 . 有数百行 . 每一行都是英文或中文字符,但不是两者(有一些例外,但可能少于<10,因此这些是可发现和可管理的) . 单行可能包含多个句子 . 我最终想要的是两个文件;一个英文;另一个是中文 .

这些线倾向于替代语言,但并非总是如此 . 有时英语可能有两行,后面有一行中文 .

有没有办法使用Sed或Awk将语言分成两个不同的文本文件?

1 回答

  • 1

    这个单行可能会有所帮助:

    awk '/[^\x00-\x7f]/{print >"cn.txt";next}{print > "en.txt"}' file
    

    它将生成两个文件 cn.txt and en.txt . 它检查该行是否包含至少一个非ascii字符,如果找到一个,该行将被视为中文行 .

    小测试:

    kent$  cat f
    this is line1 in english 
    你好
    this is line2 in english 
    你好你好
    this is line3 in english 
    this is line4 in english 
    你好你好你好
    
    kent$  awk '/[^\x00-\x7f]/{print >"cn.txt";next}{print > "en.txt"}' f
    
    kent$  head *.txt
    ==> cn.txt <==
    你好
    你好你好
    你好你好你好
    
    ==> en.txt <==
    this is line1 in english 
    this is line2 in english 
    this is line3 in english 
    this is line4 in english
    

相关问题