Chinaunix

标题: 写一个脚本 将所有程序中带有日文双引号的字符串全部提取,并记录原来位置以及字符大 [打印本页]

作者: GuoPC1222    时间: 2013-08-06 11:05
标题: 写一个脚本 将所有程序中带有日文双引号的字符串全部提取,并记录原来位置以及字符大

#define STR_EQUIPCHIRA2                "チラー設備異常(軽度) "
#define STR_EQUIPAIR1                "空調設備異常(重度) "
#define STR_EQUIPAIR2                "空調設備異常(軽度) "
#define STR_EQUIPPWR1                "電源設備異常(重度) "
#define STR_EQUIPPWR2                "電源設備異常(軽度) "
背景介绍:
原来所有文字编码格式是euc-jp,现在全部改成了UTF-8,原来设置的数组空间不够,现在要改一下分配空间,所以要先找出所有类似"電源設備異常(軽度) "字符串,求指点。

作者: GuoPC1222    时间: 2013-08-06 11:07
或者有什么好的软件 都可以
作者: Shell_HAT    时间: 2013-08-06 11:10
  1. awk '/#define/{print $3}' urfile
复制代码

作者: HH106    时间: 2013-08-06 11:24
回复 1# GuoPC1222
记录原来位置是什么意思,行数? 列数?

   
作者: GuoPC1222    时间: 2013-08-06 11:26
恩,是的,否则即使找出来了也不好修改。求指点,越详细越好。回复 4# HH106


   
作者: Shell_HAT    时间: 2013-08-06 11:27
回复 5# GuoPC1222
  1. awk '/#define/{print NR,$3}' urfile
复制代码

作者: GuoPC1222    时间: 2013-08-06 11:29
回复 6# Shell_HAT
您好,有几百个文件,这个urfile 怎么搞呢


   
作者: GuoPC1222    时间: 2013-08-06 11:32
回复 6# Shell_HAT
还有一点要请教前辈,$3 这里的字符串不固定,只统计双引号里面是日文的字符串,$3怎么定义合适


   
作者: dn833    时间: 2013-08-06 11:37
  1. awk '/#define/{print NR,$3}'  *
复制代码
只要在一个目录里通吃
作者: Shell_HAT    时间: 2013-08-06 11:41
回复 8# GuoPC1222


请把原始文件压缩一下传上来看看,大家才好总结规律。
你最初的想法不一定适用,比如:
"重度"
你说它是日文?
作者: GuoPC1222    时间: 2013-08-06 13:43
本帖最后由 GuoPC1222 于 2013-08-06 14:19 编辑

[url=forum.php?mod=redirect&goto=findpost&pid=& sslb.pdf (403.73 KB, 下载次数: 1)


文件上传了,类似文件几百个,在不同的文件夹下,现在是想把带“日文”的字符串提取出来,然后记录在原始文件位置,那个文件,第几行。还有一点有的可能在注释里有“日文”,这个要过滤掉,没写过脚本,突然来了个任务 ,求指点



   
作者: rdcwayx    时间: 2013-08-06 13:51
源文件就是PDF 文件吗? 最好把原本的格式直接上传。

作者: GuoPC1222    时间: 2013-08-06 14:00
回复 12# rdcwayx



    源文件
作者: GuoPC1222    时间: 2013-08-06 14:01
SSlib.rar (5.9 KB, 下载次数: 3)



回复 12# rdcwayx


    刚才没传好,请指点
作者: rdcwayx    时间: 2013-08-06 14:04
本帖最后由 rdcwayx 于 2013-08-06 16:05 编辑

给你个提示
  1. /*
  2. * SSU関係
  3. */
  4. /*デフォルト名 */
  5. /* ---- SSIsSsuPower----*/
  6. #define STR_SSUPWROFF "電源切断 電源切断 "
  7. #define STR_SSUPWRON "電源投入 電源投入 "
  8. #define STR_SSUPWRSEQ "電源制御中 "
  9. #define STR_SSUPWRALRM1 "電源アラーム 1 "
  10. #define STR_SSUPWRALRM2 "電源アラーム 2 "
  11. #define STR_SSUPWRPATHE "電源制御パス異常 "
  12. #define STR_SSUPWRSCCIERR "SCCI 制御部異常 "
复制代码
  1. od -c urfile
  2. 0000000   /   *  \n   *       S   S   U 351 226 242 344 277 202  \n   *
  3. 0000020   /  \n   /   * 343 203 207 343 203 225 343 202 251 343 203 253
  4. 0000040 343 203 210 345 220 215       *   /  \n   /   *       -   -   -
  5. 0000060   -       S   S   I   s   S   s   u   P   o   w   e   r   -   -
  6. 0000100   -   -   *   /  \n   #   d   e   f   i   n   e       S   T   R
  7. 0000120   _   S   S   U   P   W   R   O   F   F       " 351 233 273 346
  8. 0000140 272 220 345 210 207 346 226 255     351 233 273 346 272 220 345
  9. 0000160 210 207 346 226 255       "  \n   #   d   e   f   i   n   e
  10. 0000200   S   T   R   _   S   S   U   P   W   R   O   N       " 351 233
  11. 0000220 273 346 272 220 346 212 225 345 205 245     351 233 273 346 272
  12. 0000240 220 346 212 225 345 205 245       "  \n   #   d   e   f   i   n
  13. 0000260   e       S   T   R   _   S   S   U   P   W   R   S   E   Q
  14. 0000300   " 351 233 273 346 272 220 345 210 266 345 276 241 344 270 255
  15. 0000320       "  \n   #   d   e   f   i   n   e       S   T   R   _   S
  16. 0000340   S   U   P   W   R   A   L   R   M   1       " 351 233 273 346
  17. 0000360 272 220 343 202 242 343 203 251 343 203 274 343 203 240       1
  18. 0000400       "  \n   #   d   e   f   i   n   e       S   T   R   _   S
  19. 0000420   S   U   P   W   R   A   L   R   M   2       " 351 233 273 346
  20. 0000440 272 220 343 202 242 343 203 251 343 203 274 343 203 240       2
  21. 0000460       "  \n   #   d   e   f   i   n   e       S   T   R   _   S
  22. 0000500   S   U   P   W   R   P   A   T   H   E       " 351 233 273 346
  23. 0000520 272 220 345 210 266 345 276 241 343 203 221 343 202 271 347 225
  24. 0000540 260 345 270 270       "  \n   #   d   e   f   i   n   e       S
  25. 0000560   T   R   _   S   S   U   P   W   R   S   C   C   I   E   R   R
  26. 0000600       "   S   C   C   I     345 210 266 345 276 241 351 203 250
  27. 0000620 347 225 260 345 270 270       "  \n
  28. 0000631
复制代码
这个针对所有的双字节字符,只要有字符是三位数的,如果你的文件里只是日文的话,那就可以确定了。

http://bbs.chinaunix.net/forum.p ... 9&fromuid=28783
作者: rdcwayx    时间: 2013-08-06 14:08
确定后,写个脚本定位输出一下,思路大体就是这样。
作者: GuoPC1222    时间: 2013-08-06 14:10
回复 15# rdcwayx
谢谢 了


   
作者: rdcwayx    时间: 2013-08-06 14:15
试了一下你新上传的.h 文件,确实可以,判断的话,可能要考虑 >128 的才是双字节字符。
作者: zxd_echo    时间: 2013-08-06 16:42
回复 14# GuoPC1222


    用你的文件试了一下
    find SSlib/ -type f -print0 | "xargs" -0  grep  -nH "STR_"| grep define | awk -F '[: \t"]+' '{print $1,$2,$4"\t"$(NF-1)}'

输出大概是这样的,看看是否要这效果:
SSlib/SSlib.h 112 STR_PWROFF        電源切断
SSlib/SSlib.h 113 STR_PWRON        電源投入
SSlib/SSlib.h 114 STR_PWRSEQ        電源制御中
SSlib/SSlib.h 115 STR_PWRALRM1        電源アラーム1
SSlib/SSlib.h 116 STR_PWRALRM2        電源アラーム2
SSlib/SSlib.h 117 STR_PWRPATHE        電源制御パス異常
SSlib/SSlib.h 118 STR_PWRSCCIERR        SCCI制御部異常
SSlib/SSlib.h 121 STR_MAINT        保守中
SSlib/SSlib.h 122 STR_ACTMAINT        活性保守中
SSlib/SSlib.h 123 STR_OFFLINE        オフライン
SSlib/SSlib.h 124 STR_STOP        停止
SSlib/SSlib.h 125 STR_RUN        動作中
SSlib/SSlib.h 126 STR_IPL_EXE        IPL実行中
SSlib/SSlib.h 127 STR_IPL_COMP        IPL完了
SSlib/SSlib.h 128 STR_IPL_FAIL        IPL失敗
SSlib/SSlib.h 129 STR_IMPL_FAIL        IMPL失敗
SSlib/SSlib.h 130 STR_SYSDOWN        システムダウン
SSlib/SSlib.h 131 STR_CHKSTOP        チェックストップ
SSlib/SSlib.h 132 STR_SVPPATHE        SVP通信異常
SSlib/SSlib.h 133 STR_DEGRAD        縮退運転中
SSlib/SSlib.h 134 STR_OPCALL1        オペコール1
SSlib/SSlib.h 135 STR_OPCALL2        オペコール2




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2