ファイルのリストは、カンマ区切りのリストです。リストは、#
を使用してコメントアウトすることができます。ファイルを解析してコメントのついた最初の行を生成し、コメントを付けてその内容を使用するbashスクリプト
#1,2,3
#4,5,6
7,8,9
10,11,12
私は、最初のコメントのないシーケンスを取りbashコマンドをしたいのですが数字を分割し(ポートがノックに使用ノックで、)コマンドに渡し、最終的に得られた行をコメントアウト。
#1,2,3
#4,5,6
#7,8,9
10,11,12
として
- 実行
knock myhost 7 8 9
編集入力ファイルを、私はいくつかのスーパーは、単にそこにあると思います。上記の例でコマンドを最初にすべき実行
sed/awkを使ってこれを行う方法ですが、私はこれらのコマンドをあまりよく知っていません。
は、事前にありがとう、私は、入力ファイルからのみ、単一の行を処理し、コマンドを望む編集
、ループ
EDIT2てファイル全体を消費しません*
私はzshでこれを書いてしまいました。あなたのおかげで、
#!/bin/zsh sequences=$HOME/.knock.$1.sequences read -A line <<< "$(grep "^[^#]" $sequences -m 1 -n)" IFS=, read -A ports <<< $line[2] IFS=: read -A linenum <<< $line[1] knock $1 $ports if nc -z -w1 $1 22; then sed -i "$linenum s/^/#/" $sequences fi
ファイルを繰り返し書き直すと、隠された効率が悪くなります。単純にカウントを保持して、最初から多くの行がI/O( 'sed -i" 1、$ {count} s/^ /#/ "$ file" ')。それが受け入れられず、詳細な制御が絶対に必要な場合、シーケンシャルファイルはほとんど理想的ではありません。おそらくデータベースやキューシステムを使用していますか? – tripleee
毎回実行されるコマンドが1行だけを処理したい。私はそのコマンドを頻繁に使用しません。 – leonixyz
@leonixyz、あなたはプログラムがうまくいくと思う方法を表現するメタコードを書いてみてはいかがですか?それが立てば、あなたの質問は、人々が訂正するためのコードがないので、ダウンボートを集めるかもしれません。ここ数人はプロのプログラミングサービスを無償で提供していますが、実際にはStackOverflowの「方法」ではありません。私たちはあなたに無料のものを提供するだけでなく、工芸品の改善を手助けしたいと考えています。 – ghoti