6

これを行うためのUNIXワンライナーはありますか?

head -n 3 test.txt > out_dir/test.head.txt
grep hello test.txt > out_dir/test.tmp.txt
cat out_dir/test.head.txt out_dir/test.tmp.txt > out_dir/test.hello.txt
rm out_dir/test.head.txt out_dir/test.tmp.txt

つまり、特定のファイルからヘッダーといくつかの grep 行を同時に取得したいのです。

4

5 に答える 5

3

awkソリューションが最適ですが、完全を期すために sed ソリューションを追加します。

$ sed -n test.txt -e '1,3p' -e '4,$s/hello/hello/p' test.txt > $output_file

-n指定しない限り、行を印刷しないように指定されています。これら-eのコマンドは'1,3p、最初の 3 行4,$s/hello/hello/pで単語 を含むすべての行を検索しhello、置換helloを返します。p最後の は、置換が行われたすべての行を出力します。

を使用する方法があるはずですが、4,$g/HELLO/p機能させることができませんでした。本当にsedをいじるのは久しぶりです。

于 2013-11-12T18:49:06.917 に答える
2

もちろん、私は行きawkますが、懐かしedさを感じる前の解決策は次のとおりです。vi

ed test.txt <<%
4,$ v/hello/d
w test.hello.txt
%
于 2013-11-12T20:44:04.120 に答える