我试图将一个文本文件分成两个不同的文件,文件如下所示:
//ABC12//burrito (line of text)
(line of text)
(line of text)
etc
//ABC12//taco (line of text)
(line of text)
(line of text)
etc
//ABC12//taco (line of text)
(line of text)
(line of text)
etc
//ABC12//burrito (line of text)
(line of text)
(line of text)
etc所以我想把所有以玉米煎饼和所有的玉米煎饼开头的行分割成一个名为玉米煎饼的文件,直到里面有墨西哥玉米卷的一行被读出来,我想最好的方法是:
for each line in $text;
if line contains burrito
outputfile=burrito
line>>$outputfile
elseif line contains taco
outputfile=taco
line>>$outputfile
else
line>>$outputfile但我不确定,如果有什么帮助,我会很感激的。
发布于 2014-12-30 16:21:18
这可以用awk来完成
awk '/burrito/ {f="burrito"} /taco/ {f="taco"} {print > f}' file解释
这会将行输出到文件f,当找到taco或burrito时,文件的名称会更改:
/burrito/ {f="burrito"} --这意味着:如果行包含burrito,那么将变量f设置为burrito。/taco/ {f="taco"}和taco一样。prints the line into the file stored inf. You can also say{print >f“.txt”}}或其他东西。如果希望设置默认文件名,以便在找到burrito或taco之前将其输出到其他地方,则可以这样说:
awk 'BEGIN {f="another_file"} /burrito/ {f="burrito"} /taco/ {f="taco"} {print > f}' file发布于 2014-12-30 16:43:06
您可以使用以下awk命令:
wk 'BEGIN{split("burrito taco", a); f=a[1]} {
for (i=1; i<=length(a); i++) if ($0 ~ a[i]) f=a[i]; print $0 > f}' filetaco的所有行重定向到一个名为taco的输出文件。burrito的所有行重定向到一个名为burrito的输出文件。f=a[1]。https://stackoverflow.com/questions/27708818
复制相似问题