私の入力は次のとおりです。
fruit apple word
fruit lemon
fruit orange other word
meat ham word
vegetable salad other
vegetable lettuce more
最初の単語に基づいて繰り返される行を空行に区切る方法は?このように:
fruit apple word
fruit lemon other word
fruit orange word
meat ham word
vegetable salad other
vegetable lettuce more
編集:最初の単語の後にスペースがある可能性があることに言及するのを忘れました。
ベストアンサー1
これは、個人のニーズに合わせてカスタマイズできる基本的なコマンドです。
awk '{print $0 > $1}' inputfile
編集:申し訳ありません。あなたの質問を誤って読んだことに気づきました。空行を使用してファイルを簡単に「再結合」できますが、これは正解ではありません。
これが可能な解決策です
for file in $(awk '{print $1; print $0 > $1}' data.txt | sort | uniq)
do
cat $file
echo
rm $file
done > output.txt
ファイルが事前にソートされている場合にのみ、awkソリューションを使用してください。
awk '{a=$1; if (b != "" && a != b) {printf "\n";}; print $0; b = a}' inputfile
don_crisstiのコメントに基づいて修正しました(ありがとうございます!)
awk '{if (a != "" && a != $1) {printf "\n";}; print $0; a = $1}' inputfile