Fab*_*bio 7 bash text-processing split
我有一个包含以下内容的文本文件:
"random
textA"
"random
random
textB"
Run Code Online (Sandbox Code Playgroud)
分隔符是 "
如何使用 bash 命令将包含的内容拆分为多个文件,如下所示?
文件 1:
random
textA
Run Code Online (Sandbox Code Playgroud)
文件 2:
random
random
textB
Run Code Online (Sandbox Code Playgroud)
我进入了使用csplitor 的例子,awk但它们没有涵盖这个文本布局。
简单awk命令:
awk 'NR%2==0{ print > "File "++i }' RS='"' file
Run Code Online (Sandbox Code Playgroud)
RS定义"为记录分隔符,NR是记录编号。如果记录号是 2 的模数(因为我们有另一个"记录的第一个),则将当前记录打印$0到File #.
小智 5
如果开头的引号总是在行的开头,csplit 会像这样正常工作:
bash$ csplit /tmp/data '/^"/'
Run Code Online (Sandbox Code Playgroud)
这会生成名为 xx00 等的文件。请注意,您的示例删除了引号,而这不会。你需要一个命令行 sed 来做到这一点:
bash$ for file in xx* ; do { sed 's/^"//;s/"$//;' ${file} >x${file}; } ; done
Run Code Online (Sandbox Code Playgroud)