免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2419 | 回复: 9

[文本处理] 字符串修改 [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
发表于 2015-05-23 11:01 |显示全部楼层
本帖最后由 shihyu 于 2015-05-23 11:01 编辑

有办法透过 sed , awk , regular expression 把下面字符串都改成 YES?
  1. RECURSIVE = NO
  2. HAVE_DOT               = NO
  3. EXTRACT_ALL            = NO
  4. EXTRACT_PRIVATE        = NO
  5. EXTRACT_STATIC         = NO
  6. CALL_GRAPH             = NO
复制代码
  1. RECURSIVE = YES
  2. HAVE_DOT               = YES
  3. EXTRACT_ALL            = YES
  4. EXTRACT_PRIVATE        = YES
  5. EXTRACT_STATIC         = YES
  6. CALL_GRAPH             = YES
复制代码

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
发表于 2015-05-23 11:08 |显示全部楼层
本帖最后由 关阴月飞 于 2015-05-23 11:09 编辑
  1. sed -i.bak 's/= NO/= YES/' urfile
复制代码

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
发表于 2015-05-23 11:31 |显示全部楼层
  1. # TAG = value [value, ...]
  2. # TAG += value [value, ...]
  3. DOXYFILE_ENCODING      = UTF-8
  4. PROJECT_NAME           = "My Project"
  5. PROJECT_NUMBER         =
  6. PROJECT_BRIEF          =
  7. PROJECT_LOGO           =
  8. OUTPUT_DIRECTORY       =
  9. CREATE_SUBDIRS         = NO
  10. ALLOW_UNICODE_NAMES    = NO
  11. OUTPUT_LANGUAGE        = English
  12. BRIEF_MEMBER_DESC      = YES
  13. REPEAT_BRIEF           = YES
  14. ABBREVIATE_BRIEF       =
  15. ALWAYS_DETAILED_SEC    = NO
  16. INLINE_INHERITED_MEMB  = NO
  17. FULL_PATH_NAMES        = YES
  18. STRIP_FROM_PATH        =
  19. STRIP_FROM_INC_PATH    =
  20. SHORT_NAMES            = NO
  21. JAVADOC_AUTOBRIEF      = NO
  22. QT_AUTOBRIEF           = NO
  23. MULTILINE_CPP_IS_BRIEF = NO
  24. INHERIT_DOCS           = YES
  25. SEPARATE_MEMBER_PAGES  = NO
  26. TAB_SIZE               = 4
  27. # name=value
  28. # "sideeffect=@par Side Effects:\n"
  29. ALIASES                =
  30. # A mapping has the form "name=value". For example adding "class=itcl::class"
  31. TCL_SUBST              =
  32. OPTIMIZE_OUTPUT_FOR_C  = NO
  33. OPTIMIZE_OUTPUT_JAVA   = NO
  34. OPTIMIZE_FOR_FORTRAN   = NO
  35. OPTIMIZE_OUTPUT_VHDL   = NO
  36. # using this tag. The format is ext=language, where ext is a file extension, and
  37. # and .f files as C (default is Fortran), use: inc=Fortran f=C.
  38. EXTENSION_MAPPING      =
  39. MARKDOWN_SUPPORT       = YES
  40. AUTOLINK_SUPPORT       = YES
  41. BUILTIN_STL_SUPPORT    = NO
  42. CPP_CLI_SUPPORT        = NO
  43. SIP_SUPPORT            = NO
  44. IDL_PROPERTY_SUPPORT   = YES
  45. DISTRIBUTE_GROUP_DOC   = NO
  46. SUBGROUPING            = YES
  47. INLINE_GROUPED_CLASSES = NO
  48. INLINE_SIMPLE_STRUCTS  = NO
  49. TYPEDEF_HIDES_STRUCT   = NO
  50. # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
  51. LOOKUP_CACHE_SIZE      = 0
  52. EXTRACT_ALL            = NO
  53. EXTRACT_PRIVATE        = NO
  54. EXTRACT_PACKAGE        = NO
  55. EXTRACT_STATIC         = NO
  56. EXTRACT_LOCAL_CLASSES  = YES
  57. EXTRACT_LOCAL_METHODS  = NO
  58. EXTRACT_ANON_NSPACES   = NO
  59. HIDE_UNDOC_MEMBERS     = NO
  60. HIDE_UNDOC_CLASSES     = NO
  61. HIDE_FRIEND_COMPOUNDS  = NO
  62. HIDE_IN_BODY_DOCS      = NO
  63. INTERNAL_DOCS          = NO
  64. CASE_SENSE_NAMES       = YES
  65. HIDE_SCOPE_NAMES       = NO
  66. SHOW_INCLUDE_FILES     = YES
  67. SHOW_GROUPED_MEMB_INC  = NO
  68. FORCE_LOCAL_INCLUDES   = NO
  69. INLINE_INFO            = YES
  70. SORT_MEMBER_DOCS       = YES
  71. SORT_BRIEF_DOCS        = NO
  72. SORT_MEMBERS_CTORS_1ST = NO
  73. SORT_GROUP_NAMES       = NO
  74. SORT_BY_SCOPE_NAME     = NO
  75. STRICT_PROTO_MATCHING  = NO
  76. GENERATE_TODOLIST      = YES
  77. GENERATE_TESTLIST      = YES
  78. GENERATE_BUGLIST       = YES
  79. GENERATE_DEPRECATEDLIST= YES
  80. ENABLED_SECTIONS       =
  81. MAX_INITIALIZER_LINES  = 30
  82. SHOW_USED_FILES        = YES
  83. SHOW_FILES             = YES
  84. SHOW_NAMESPACES        = YES
  85. FILE_VERSION_FILTER    =
  86. LAYOUT_FILE            =
  87. CITE_BIB_FILES         =
  88. QUIET                  = NO
  89. WARNINGS               = YES
  90. WARN_IF_UNDOCUMENTED   = YES
  91. WARN_IF_DOC_ERROR      = YES
  92. WARN_NO_PARAMDOC       = NO
  93. WARN_FORMAT            = "$file:$line: $text"
  94. WARN_LOGFILE           =
  95. INPUT                  =
  96. INPUT_ENCODING         = UTF-8
  97. FILE_PATTERNS          =
  98. RECURSIVE              = NO
  99. EXCLUDE                =
  100. EXCLUDE_SYMLINKS       = NO
  101. EXCLUDE_PATTERNS       =
  102. EXCLUDE_SYMBOLS        =
  103. EXAMPLE_PATH           =
  104. EXAMPLE_PATTERNS       =
  105. EXAMPLE_RECURSIVE      = NO
  106. IMAGE_PATH             =
  107. INPUT_FILTER           =
  108. # filter if there is a match. The filters are a list of the form: pattern=filter
  109. # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
  110. FILTER_PATTERNS        =
  111. FILTER_SOURCE_FILES    = NO
  112. # *.ext= (so without naming a filter).
  113. FILTER_SOURCE_PATTERNS =
  114. USE_MDFILE_AS_MAINPAGE =
  115. SOURCE_BROWSER         = NO
  116. INLINE_SOURCES         = NO
  117. STRIP_CODE_COMMENTS    = YES
  118. REFERENCED_BY_RELATION = NO
  119. REFERENCES_RELATION    = NO
  120. REFERENCES_LINK_SOURCE = YES
  121. SOURCE_TOOLTIPS        = YES
  122. USE_HTAGS              = NO
  123. VERBATIM_HEADERS       = YES
  124. ALPHABETICAL_INDEX     = YES
  125. COLS_IN_ALPHA_INDEX    = 5
  126. IGNORE_PREFIX          =
  127. GENERATE_HTML          = YES
  128. HTML_OUTPUT            = html
  129. HTML_FILE_EXTENSION    = .html
  130. HTML_HEADER            =
  131. HTML_FOOTER            =
  132. HTML_STYLESHEET        =
  133. HTML_EXTRA_STYLESHEET  =
  134. HTML_EXTRA_FILES       =
  135. HTML_COLORSTYLE_HUE    = 220
  136. HTML_COLORSTYLE_SAT    = 100
  137. HTML_COLORSTYLE_GAMMA  = 80
  138. HTML_TIMESTAMP         = YES
  139. HTML_DYNAMIC_SECTIONS  = NO
  140. HTML_INDEX_NUM_ENTRIES = 100
  141. GENERATE_DOCSET        = NO
  142. DOCSET_FEEDNAME        = "Doxygen generated docs"
  143. DOCSET_BUNDLE_ID       = org.doxygen.Project
  144. DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
  145. DOCSET_PUBLISHER_NAME  = Publisher
  146. # (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
  147. GENERATE_HTMLHELP      = NO
  148. CHM_FILE               =
  149. HHC_LOCATION           =
  150. GENERATE_CHI           = NO
  151. CHM_INDEX_ENCODING     =
  152. BINARY_TOC             = NO
  153. TOC_EXPAND             = NO
  154. GENERATE_QHP           = NO
  155. QCH_FILE               =
  156. QHP_NAMESPACE          = org.doxygen.Project
  157. QHP_VIRTUAL_FOLDER     = doc
  158. QHP_CUST_FILTER_NAME   =
  159. QHP_CUST_FILTER_ATTRS  =
  160. QHP_SECT_FILTER_ATTRS  =
  161. QHG_LOCATION           =
  162. GENERATE_ECLIPSEHELP   = NO
  163. ECLIPSE_DOC_ID         = org.doxygen.Project
  164. DISABLE_INDEX          = NO
  165. GENERATE_TREEVIEW      = NO
  166. ENUM_VALUES_PER_LINE   = 4
  167. TREEVIEW_WIDTH         = 250
  168. EXT_LINKS_IN_WINDOW    = NO
  169. FORMULA_FONTSIZE       = 10
  170. FORMULA_TRANSPARENT    = YES
  171. USE_MATHJAX            = NO
  172. MATHJAX_FORMAT         = HTML-CSS
  173. MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
  174. # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
  175. MATHJAX_EXTENSIONS     =
  176. MATHJAX_CODEFILE       =
  177. SEARCHENGINE           = YES
  178. SERVER_BASED_SEARCH    = NO
  179. EXTERNAL_SEARCH        = NO
  180. SEARCHENGINE_URL       =
  181. SEARCHDATA_FILE        = searchdata.xml
  182. EXTERNAL_SEARCH_ID     =
  183. # EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
  184. EXTRA_SEARCH_MAPPINGS  =
  185. GENERATE_LATEX         = YES
  186. LATEX_OUTPUT           = latex
  187. LATEX_CMD_NAME         = latex
  188. MAKEINDEX_CMD_NAME     = makeindex
  189. COMPACT_LATEX          = NO
  190. PAPER_TYPE             = a4
  191. # EXTRA_PACKAGES=times
  192. EXTRA_PACKAGES         =
  193. LATEX_HEADER           =
  194. LATEX_FOOTER           =
  195. LATEX_EXTRA_FILES      =
  196. PDF_HYPERLINKS         = YES
  197. USE_PDFLATEX           = YES
  198. LATEX_BATCHMODE        = NO
  199. LATEX_HIDE_INDICES     = NO
  200. LATEX_SOURCE_CODE      = NO
  201. LATEX_BIB_STYLE        = plain
  202. GENERATE_RTF           = NO
  203. RTF_OUTPUT             = rtf
  204. COMPACT_RTF            = NO
  205. RTF_HYPERLINKS         = NO
  206. RTF_STYLESHEET_FILE    =
  207. RTF_EXTENSIONS_FILE    =
  208. GENERATE_MAN           = NO
  209. MAN_OUTPUT             = man
  210. MAN_EXTENSION          = .3
  211. MAN_SUBDIR             =
  212. MAN_LINKS              = NO
  213. GENERATE_XML           = NO
  214. XML_OUTPUT             = xml
  215. XML_PROGRAMLISTING     = YES
  216. GENERATE_DOCBOOK       = NO
  217. DOCBOOK_OUTPUT         = docbook
  218. DOCBOOK_PROGRAMLISTING = NO
  219. GENERATE_AUTOGEN_DEF   = NO
  220. GENERATE_PERLMOD       = NO
  221. PERLMOD_LATEX          = NO
  222. PERLMOD_PRETTY         = YES
  223. PERLMOD_MAKEVAR_PREFIX =
  224. ENABLE_PREPROCESSING   = YES
  225. MACRO_EXPANSION        = NO
  226. EXPAND_ONLY_PREDEF     = NO
  227. SEARCH_INCLUDES        = YES
  228. INCLUDE_PATH           =
  229. INCLUDE_FILE_PATTERNS  =
  230. # name=definition (no spaces). If the definition and the "=" are omitted, "=1"
  231. # recursively expanded use the := operator instead of the = operator.
  232. PREDEFINED             =
  233. EXPAND_AS_DEFINED      =
  234. SKIP_FUNCTION_MACROS   = YES
  235. # TAGFILES = file1 file2 ...
  236. # TAGFILES = file1=loc1 "file2 = loc2" ...
  237. TAGFILES               =
  238. GENERATE_TAGFILE       =
  239. ALLEXTERNALS           = NO
  240. EXTERNAL_GROUPS        = YES
  241. EXTERNAL_PAGES         = YES
  242. PERL_PATH              = /usr/bin/perl
  243. CLASS_DIAGRAMS         = YES
  244. MSCGEN_PATH            =
  245. DIA_PATH               =
  246. HIDE_UNDOC_RELATIONS   = YES
  247. HAVE_DOT               = YES
  248. DOT_NUM_THREADS        = 0
  249. DOT_FONTNAME           = Helvetica
  250. DOT_FONTSIZE           = 10
  251. DOT_FONTPATH           =
  252. CLASS_GRAPH            = YES
  253. COLLABORATION_GRAPH    = YES
  254. GROUP_GRAPHS           = YES
  255. UML_LOOK               = YES
  256. UML_LIMIT_NUM_FIELDS   = 10
  257. TEMPLATE_RELATIONS     = NO
  258. INCLUDE_GRAPH          = YES
  259. INCLUDED_BY_GRAPH      = YES
  260. CALL_GRAPH             = NO
  261. CALLER_GRAPH           = NO
  262. GRAPHICAL_HIERARCHY    = YES
  263. DIRECTORY_GRAPH        = YES
  264. DOT_IMAGE_FORMAT       = png
  265. INTERACTIVE_SVG        = NO
  266. DOT_PATH               =
  267. DOTFILE_DIRS           =
  268. MSCFILE_DIRS           =
  269. DIAFILE_DIRS           =
  270. PLANTUML_JAR_PATH      =
  271. DOT_GRAPH_MAX_NODES    = 50
  272. MAX_DOT_GRAPH_DEPTH    = 0
  273. DOT_TRANSPARENT        = NO
  274. DOT_MULTI_TARGETS      = NO
  275. GENERATE_LEGEND        = YES
  276. DOT_CLEANUP            = YES
复制代码
上面是所有數據我只想下面幾項改成 YES
  1. RECURSIVE = NO
  2. HAVE_DOT               = NO
  3. EXTRACT_ALL            = NO
  4. EXTRACT_PRIVATE        = NO
  5. EXTRACT_STATIC         = NO
  6. CALL_GRAPH             = NO
复制代码

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
发表于 2015-05-23 11:49 |显示全部楼层
  1. sed -ri.bak '/RECURSIVE|HAVE_DOT|EXTRACT_ALL|条目2|条目3|条目n../s/= NO/= YES/' a
复制代码

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
发表于 2015-05-23 11:57 |显示全部楼层
thanks

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
发表于 2015-05-23 11:58 |显示全部楼层
本帖最后由 songyc_2015 于 2015-05-23 12:09 编辑

回复 3# shihyu
  1. awk -F'[ =]+' 'BEGIN{t="RECURSIVE HAVE_DOT EXTRACT_ALL EXTRACT_PRIVATE EXTRACT_STATIC CALL_GRAPH";l=split(t,a," ");for(i=1;i<=l;i++)b[a[i]]}$1 in b{sub(/= .*$/,"= YES")}1' file
  2. awk '/^(RECURSIVE|HAVE_DOT|EXTRACT_ALL|EXTRACT_PRIVATE|EXTRACT_STATIC|CALL_GRAPH)/{sub(/= .*$/,"= YES")}1' file
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2015-05-23 21:26 |显示全部楼层
$ cat set
RECURSIVE = YES
HAVE_DOT               = YES
EXTRACT_ALL            = YES
EXTRACT_PRIVATE        = YES
EXTRACT_STATIC         = YES
CALL_GRAPH             = YES

$ awk -F' *= *' 'FNR==NR{a[$1]=$2;next}a[$1]{sub(/=.*$/,"= "a[$1])}1' set FILE > FILE.new

$ diff FILE FILE.new
52,53c52,53
< EXTRACT_ALL            = NO
< EXTRACT_PRIVATE        = NO
---
> EXTRACT_ALL            = YES
> EXTRACT_PRIVATE        = YES
55c55
< EXTRACT_STATIC         = NO
---
> EXTRACT_STATIC         = YES
98c98
< RECURSIVE              = NO
---
> RECURSIVE              = YES
260c260
< CALL_GRAPH             = NO
---
> CALL_GRAPH             = YES

$ grep HAVE_DOT FILE FILE.new
FILE:HAVE_DOT               = YES
FILE.new:HAVE_DOT               = YES

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2016-10-26 16:19:04
发表于 2016-08-31 15:06 |显示全部楼层
awk  '{print gensub("NO","YES",$0)}'  file

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2016-08-31 19:07 |显示全部楼层
  1. perl -pe 's/NO\Z/YES/' f
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2016-08-31 19:27 |显示全部楼层
适可而止,回帖前,看一下原始发文日期...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP