回答:
grep、sed、awk、sortなどのツールを使用すると、この他のサイトからいくつかの回答を実装できます。それらには以下が含まれます(bが必要な場合、dが必要な場合、他のすべては通常)
1行目から2行目など、必要な順序で行を引き出します」
grep '^b' myfile > outfile
grep '^d' myfile >> outfile
grep -v '^b' myfile | grep -v '^d' | sort >> outfile
最初にカスタムの「ソートキー」を追加してから、ソートしてから後で削除します。
sed -e 's/^b/0&/' -e t -e 's/^d/1&/' -e 't' -e 's/^/2/' |
sort |
sed 's/^.//'
最も簡単に見えるようになります:
カスタムソート関数を簡単に指定できるPerl、Python、Rubyなどの言語を使用します。
perl -e 'print sort {($b =~ /^[bd]/) - ($a =~ /^[bd]/) ||
$a cmp $b} <>'
python -c 'import sys; sys.stdout.write(sorted(sys.stdin.readlines(), key=lambda s: (0 if s[0]=="b" else 1 if s[0]=="d" else 2), s))'
または、awk(説明なし、YMMV)を試してください。
sort myfile | awk '$0 ~ /^b/ || $0 ~ /^d/ {print} $0 !~ /^b/ && $0 !~ /^d/ { a[f++] = $0 } END { for (word = 0; word < f; word++) { print a[word] } }'