2017-07-07 1 views
1

に切り替えることは可能ですか?例えばbashのラインプレースメントを

Iは、テキストファイルにbashコマンドの一部として両方の出力であるライン

2. diskusage1: 27.0572519084 
3. partition1: 

を有します。

これらの行の順序を逆にする方法はありますか?彼らが見えるように場所を切り替えるようにするには:コメントに引き続き

3. partition1: 
2. diskusage1: 27.0572519084 

おかげ

+0

はい、パイプtac' 'への出力を生成している何の出力(すなわち'逆にcat''S)例えば'some_command |タック。それをファイルと逆に書く必要があるなら、 'some_command | tac> file.txt'例: 'printf '2. diskusage1:27.0572519084 \ n3。パーティション1:\ n" | tac' –

+0

'sed'を使う必要があるなら、' some_command | sed -n '1!G; h; $ p " –

+0

任意の行にスワップするには、[この質問]を見てください(https://stackoverflow.com/questions/4331851/swapping-two-lines) –

答えて

2

、はい、あなたは簡単に使用して出力の行を逆にするか、またはsed(逆の順序でcattac。どちらの場合も、実行しているコマンドの出力をtacまたはsedにパイプするだけです。あなたは、ファイルへの逆の内容を記述する必要がある場合は、単に最後にリダイレクトを追加します(例えば> file.txt

tacを使用して、それはそれは次のようになりsedを使用して、単純に

some_command | tac > file.txt 

です:

some_command | sed -n '1!G;h;$p' > file.txt 

あなたの出力:

$ printf "2. diskusage1: 27.0572519084\n3. partition1:\n" 
2. diskusage1: 27.0572519084 
3. partition1: 

反転出力

$ printf "2. diskusage1: 27.0572519084\n3. partition1:\n" | tac 
3. partition1: 
2. diskusage1: 27.0572519084 

または

$ printf "2. diskusage1: 27.0572519084\n3. partition1:\n" | sed -n '1!G;h;$p' 
3. partition1: 
2. diskusage1: 27.0572519084 

はそれらを試してみて、あなたは、さらに質問がある場合は私に知らせてください。尽くす

+0

2番目と3番目は線だけではないように見えます。 – hedgar2017

+0

はい、合意した、良い点ですが、私は質問にあるものだけに進むことができます。もしそれが1から50であれば、カウンタと 'read 'または' readarray'を 'tac'で、または' sed'での除外範囲や 'head'と' tail'の組み合わせで ' :) '。 –

0

command | sed '2{h;d};3{p;x}' > file.txt