2011-07-18 7 views
1

もう一度私です。 bashプログラミングでviコマンド(例:5DD)を使用できますか?

dfsdf 
sdfd 
sdfs 
sdf 
vcv 
ssdff 
sdfdsf 
adssa 

私は自衛隊を一致させる必要があり、その後、私は固定数(eg.3DD)の次の行を削除する必要がありますすることができます:私は例えば、特定のパターンに一致する必要がある別の問題 最初に遭遇しています私はbashプログラミングでviコマンドを使用しますか?それとも、それをacheiveする方法はありますか。あなたはそれを手動で行いたい場合はおかげで再び

+0

聴衆が別の質問を覚えていることを期待することなく、あなたの質問が単独で理解できる場合は、これが良いでしょう(この場合は「sdf」)。あなたは尋ねました。この質問は、ファイルの行、ユーザーの入力などから、そしてあなたが正確に '削除'を意味するものと一致させたい場合は、開いたままにしておきます。 – keppla

+0

ありがとうございます。もう1つの質問ですが、bashプログラミングを使用して別のフォルダにファイルをコピーできますか?例えば。 c:/ folders/testフォルダにあるものをコピーしたい場合は、bashプログラムをフォルダファイルに入れる必要がありますか? –

+0

これは必須ではありません。絶対パス(例: 'c:/ somewhere/over/the/the rainbow')を相対パスの代わりに使用できます( 'over/the/rainbow'、現在の作業ディレクトリはc :/ somewhere) – keppla

答えて

3

再び、sedが救助に来ます!一致後の行を処理するには:

sed "/^sdf$/,+3 d" file 

これで一致する行とそれに続く3行が削除されます。 3を削除したい行数に変更してください。また、これは入力内の「sdf」が出現するたびに発生することに注意してください。

私は質問を間違って読んでいるかもしれません。

sed "/^sdf$/,+3 {/^sdf$/b skip; d; :skip}" file 
0

、でこのテキストファイルを開き、/sdfを使用して

less -N x.txt 

grepの文字列のための「自衛隊」。キーワードが強調表示されます。 nを押すと、次の文字列に移動します。 viに切り替えるとき。 vを押すだけです。 lessに戻すには、保存して終了(ZZまたは:wq)してください。

+0

これを試してみると、 'v'は別のエディタに切り替わります。 – pavium

+1

どのエディタを開くかは環境変数 '$ VISUAL'と' $ EDITOR'に依存します。どちらも設定されていなければ、 'vi'を開きます。 – carlpett

0

Bashはエディタではなく、シェルです。これは、コマンドライン編集のためにviのキーをサポートしますが、実際にはファイル全体の編集はサポートしていません。 (もちろん、あなたが)read、ループ、パターンやechoを使用して(bashでエディタをプログラムすることもできますが、bashのは、このために適切なツールではありません。)

プログラムでファイルを編集するには、sedを試してみてください。

関連する問題