CAKE_FROSTING("我需要提取和之间的字符串",。如果字符串跨越多行,则必须删除行更改处的引号和换行符。我有一个命令(感谢 stackoverflow)可以在这个方向上做一些事情,但不完全是。我该如何修复它(您能简单解释一下修复过程吗)?我正在使用 Linux bash。
sed -En ':a;N;s/.*CAKE_FROSTING\(\n?\s*?"([^,]*).*/\1/p;ba' filesToCheck/* > result.txt
Run Code Online (Sandbox Code Playgroud)
文件检查/file.h
something
CAKE_FROSTING(
"is supreme",
"[i][agree]") something else
something more
something else
CAKE_FROSTING(
"is."kinda" neat"
"in fact",
"[i][agree]") something else
something more
Run Code Online (Sandbox Code Playgroud)
当前结果.txt
is supreme"
is."kinda" neat"
Run Code Online (Sandbox Code Playgroud)
需要 result.txt
is supreme
is."kinda" neat in fact
Run Code Online (Sandbox Code Playgroud)
编辑:在@D_action的帮助下我现在有了
sed -En ':a;N;s/.*CAKE_FROSTING\(\n?\s*?"([^,]*).*,/\1/p;ba' filesToCheck/* > result.txt
Run Code Online (Sandbox Code Playgroud)
这会产生几乎正确的输出,但输出中存在不必要的引号和过多的换行符:
当前结果.txt
is supreme"
is."kinda" neat"
"in fact"
Run Code Online (Sandbox Code Playgroud)
使用GNUsed
$ sed -En ':a;N;s/.*CAKE_FROSTING\(\n?\s"([^"]*[^\n,]*)["].*\n"([[:alpha:] ]+)?.*/\1 \2/p;ba' input_file
is supreme
is."kinda" neat in fact
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |