Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 在字符串后拆分文件_Awk - Fatal编程技术网

Awk 在字符串后拆分文件

Awk 在字符串后拆分文件,awk,Awk,我在aix中有一个文件,我想在以下字符串后拆分该文件: “快照时间戳=11/25/2014 16:00:00” 我尝试使用下面的命令,但是由于字符串中的空格,我得到了错误 awk '/YOUR_TEXT_HERE/{n++}{print >"out" n ".txt" }' final.txt 如果我能得到一个语法,将数据“放在”字符串之前,这也会很有帮助。问题不在于空格,而在于“/” 您是否保护了日期中的“/”号 (/...11\/25\/2014.../) (这对我来说很有效) 正

我在aix中有一个文件,我想在以下字符串后拆分该文件:

“快照时间戳=11/25/2014 16:00:00”

我尝试使用下面的命令,但是由于字符串中的空格,我得到了错误

awk '/YOUR_TEXT_HERE/{n++}{print >"out" n ".txt" }' final.txt

如果我能得到一个语法,将数据“放在”字符串之前,这也会很有帮助。

问题不在于空格,而在于“/”

您是否保护了日期中的“/”号

(/...11\/25\/2014.../)
(这对我来说很有效)

正如@Etan Reisner所指出的

awk '$0 == "Snap..." {n++; next } {print >"out" n ".txt" }' final.txt
是一个更好的解决方案(您不必保护regex操作符)。“next”指令将从输出文件中“删除”时间戳

如果您计划将来再次这样做,我建议您使用awk Script:

#!/usr/bin/gawk -f

BEGIN                      { n =1                  }
/Snapshot timestamp = /    { n++; next             }
                           { print >"out" n ".txt" }
用法

awk -f awkscript  final.txt


如果将该字符串中的空格直接插入到该awk命令中(代替此处的
YOUR_TEXT
),则不会造成任何问题,但斜杠会。你需要逃离他们。也就是说,如果这是一个文本字符串,而这是整行,我将使用
$0==“YOUR_TEXT_HERE”
。你说的“在…之后分割”是什么意思?显示示例输入和预期输出。@EtanReisner感谢您的回复。也许是我接到了一个错误的命令,因此造成了混乱。“after”我的意思如下:原始文件A B c D快照时间戳=11/25/2014 16:00:00 E F G“after”应该给我文件:A B c D我同意在文件中包括/排除“快照”字符串,具体取决于打印当前行,然后更改为新文件或更改为创建一个新文件,然后打印该行。您只想在
n++
中更改它。谢谢:(反斜杠被维基隐藏了)。我会改进答案。
awk -f awkscript  final.txt
awkscript  final.txt    (after chmod...)