Это, кажется, проблема кодирования. Может быть символ в строке запроса, которая не может быть интерпретирована набором символов соединений. Попытайтесь использовать отличный набор символов для соединения или установите надлежащее значение по умолчанию в mysql.conf (my.conf). Распечатайте или зарегистрируйте строку запроса перед увольнением ее, для понимания, на что строку после mysql_real_escape_string () похожа функция.
grep -E '^foo' input.txt > foo.txt
grep -E '^bar' input.txt > bar.txt
mbp-000234: ~ dmourati $ cat foo.txt
foo xxx yyy zzz
foo xxx yyy zzz
foo xxx yyy zzz
foo xxx yyy zzz
foo xxx yyy zzz
mbp-000234: ~ dmourati $ cat bar. txt
bar xxx yyy zzz
bar xxx yyy zzz
grep ^foo input.txt > foo.txt
grep ^bar input.txt > bar.txt
^ обеспечит соответствие только началу строки, поэтому он будет работать, даже если остальная часть строки будет выглядеть так:
foo xxx yyy zzz bar
Попробуйте этот код и при необходимости внесите любые изменения, так как я не пробовал запускать его.
awk '
BEGIN { foo="foo.txt"; bar="bar.txt" }
{if ($1 == "foo")
$0 >> foo;
else
$0 >> bar;
}' sourcefilename
Вы также можете распределить файловый поток с помощью tee
, а затем разделить его параллельно:
<file tee >(grep '^foo' > foo.txt) >(grep '^bar' > bar.txt) > /dev/null
Результат:
$ tail -n+1 foo.txt bar.txt
==> foo.txt <==
foo xxx yyy zzz
foo xxx yyy zzz
foo xxx yyy zzz
foo xxx yyy zzz
foo xxx yyy zzz
==> bar.txt <==
bar xxx yyy zzz
bar xxx yyy zzz