Чтобы получить всю строку, которая начинается сa
:
grep '^a' infile.txt >a.txt
Чтобы получить все строки, которые не начинаются с «а»:
grep '^[^a]' infile >bcd.txt # or grep -v '^a' infile.txt >bcd.txt
Выражение [^...]
означает «любой символ, не входящий в этот набор символов», и набор содержит единственный a
.
Комбинированное действие с использованиемawk
:
awk '/^a/ { print >"a.txt"; next } { print >"bcd.txt" }' infile.txt
Программа awk
запускает первый блок для любой строки, начинающейся с a
, и второй блок для всех остальных строк (, а не строк a
, из-за оператора next
в первом блоке. ). Оператор print >filename
напечатает текущую строку в указанный файл.
Если вы хотите, чтобы строки, отличные от -a
, были отправлены на bcd.txt
, просто инвертируйтеgrep
:
grep '^a' infile.txt > a.txt
grep -v '^a' infile.txt > bcd.txt
Другим вариантом, использующим только одну команду, будет awk:
awk '/^a/ { print > "a.txt" } ! /^a/ { print > "bcd.txt" }' < input
Немного изменено, это выглядит так:
awk '
/^a/ { print > "a.txt" }
! /^a/ { print > "bcd.txt" }'
< input
... где строки, начинающиеся с a
, входят в первый блок и записываются (с добавлением )к a.txt
, а строки, начинающиеся с , а не , начинаются с a
во второй блок и записываются (с добавлением )к bcd.txt
.