各入力行に対してパイプラインを2倍にする方法は?
例:
echo "foobar" | MYSTERY_COMMAND
プバ
プバ
答え1
ただ使用してくださいsed p
。
echo foobar | sed p
また、必要ありませんcat
:
sed p input.txt
# or
sed p input.txt > output.txt
説明する
p
sed
「印刷」コマンドです。
印刷sed
図基本アクション。したがって、sed
明示的に印刷を指示すると、結果はすべての行を印刷することです。二重。
「kumquat」という単語を含む行だけを印刷するとします。 toを使用してデフォルトの印刷ジョブを-n
抑制し、一致する行を印刷するように明示的に指示できます。sed
/kumquat/
sed -n /kumquat/p
または5行だけを印刷し、他のものを印刷したくない場合:
sed -n 5p
または、15行から27行までのすべての行を印刷するには、次のようにします。
sed -n 15,17p
各行を印刷するにはとは別に「金柑」を含む行の場合は、sed
すべての金柑行を削除し、その行を印刷するデフォルトのジョブを削除されていない行で発生させることでこれを行うことができます。この-n
フラグや明示的なコマンドは必要ありませんp
。
sed /kumquat/d
sed
単純なパターン(アクション構文)を使用してください。上記の例は、行番号ベースのパターンと正規表現ベースのパターン、および2つの操作(印刷と削除)を示しています。 sed
一つあるたくさんそれよりも強力です。
最も一般的で便利なsed
コマンドを含める必要があります。
sed s/apples/oranges/g
これにより、「apple」のすべてのインスタンスが「orange」に変わり、結果が印刷されます。
g
(代替コマンドでグローバルフラグを省略すると、各行s
の最初のインスタンスのみが変更されます。)
追加資料(強くお勧め):
答え2
cat input.txt | awk '1;1' > output.txt
編集:これはjoepdの簡潔なバージョンで、元のテキストは次のとおりです。
cat input.txt | awk '{print $0 "\n" $0}' > output.txt