我有一个要求,我必须删除,文件中倒数第二行的内容,如下所示
'/tols/tope/triy8/ffgy/890/oki4/2egt.dbf',\n '/tols/tope/triy8/ffgy/890/oki4/sddd.dbf',\n '/tols/tope/triy8/ffgy/890/oki4/dfcf.dbf',\n '/tols/tope/triy8/ffgy/890/oki4/rttemp.dbf',\n '/tols/tope/triy8/ffgy/890/oki4/oxiule.dbf',\n '/tols/tope/triy8/ffgy/890/oki4/sdafrtt.dbf',\n CHARACTER SET AL32UTF8\n ;\nRun Code Online (Sandbox Code Playgroud)\n我使用来自该论坛的 gawk 命令实现了它,如下所示:
\n-bash-3.2$ gawk -v RS='\\0' -v ORS= '{print gensub(/,([^,]+)$/, "\\\\1", "")}' tstop1
[编辑]:原始问题显示"\\1"是由格式不正确引起的,但它实际上意味着"\\\\1"
获得的输出作为所需的输出:
\n '/tols/tope/triy8/ffgy/890/oki4/2egt.dbf',\n '/tols/tope/triy8/ffgy/890/oki4/sddd.dbf',\n '/tols/tope/triy8/ffgy/890/oki4/dfcf.dbf',\n '/tols/tope/triy8/ffgy/890/oki4/rttemp.dbf',\n '/tols/tope/triy8/ffgy/890/oki4/oxiule.dbf',\n '/tols/tope/triy8/ffgy/890/oki4/sdafrtt.dbf'\n CHARACTER SET AL32UTF8\n ;\nRun Code Online (Sandbox Code Playgroud)\n但我不理解该命令,尤其是这部分gensub(/,([^,]+)$/, "\\\\1", "")...\n我从手册中得到以下内容gensub:
\n
gensub(r, s, h [, t])在目标字符串中搜索t正则表达式的\n匹配项r。如果是一个以or\nh开头的字符串,则将 的所有匹配项替换为。否则,\n是一个数字,指示要替换的匹配项 。如果未提供,则使用 来代替。在替换文本中,\n序列(其中是从 1 到 9 的数字)可用于\n表示仅与 \xe2\x80\x99th 带括号的子表达式匹配的文本。该序列代表整个匹配的文本,\nas …
awk ×1