The UNIX and Linux Forums  


Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > シェルプログラミングとスクリプティング
Googleのunix.com



シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
レコードがどのようなUnixのファイルからレコードを読むこと raoscb UNIXのダミー質問と回答のため 1 2008年5月16日 07:30午前
スクリプトをファイルにして、不良ファイル内のレコードをかけるに不正なレコードを検索する shilendrajadon シェルプログラミングとスクリプティング 2 2007年12月28日 10:02午前
スクリプトをファイルにして、不良ファイル内のレコードをかけるに不正なレコードを検索する shilendrajadon UNIXの詳細&エキスパートのためのユーザー 1 2007年12月28日 午前10時
分裂を記録し、ファイルにレコードを追加する rsolap シェルプログラミングとスクリプティング 1 2007年8月13日 02:58午後
( )括弧内の一致するテキストを選択してください 筆記 UNIXのダミー質問と回答のため 4 2007年4月20日 03:14午前

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2008年6月5日
synmag synmag is offline
登録ユーザー
  
 

参加日: 2008年6月
投稿: 3
1つのファイルから2つ目のファイルからのAwkを使用して一致するレコードを選択してください

助けてください

私は2つの入力ファイルがあると私は2つに基づいてレポートを生成したいのですが。

filea :
、 account1 、パスワード、ホスト名
、 account2 、パスワード
、 account1 、パスワード、ホスト名
、 account1 、パスワード、ホスト名
、 account1 、パスワード
、 account2 、パスワード

ホスト名を空白を繰り返している

fileb :
ギボウシ属の草本
hostb
hostc

私は" fileb内のすべてのホストに対しては、 filea内の特定のアカウントのアカウントのパスワードを発生するホスト名"の記録を生成する必要があります。すなわち、私fileb内のすべてのホスト用のルートパスワードのリストを表示します。私が使用しているけれど、それを実装するためのスクリプトのロジックを知っているスキルを持っていない。私は、簡単な方法のAwk fileaのホスト名との空白を埋めるために使用することを単純に新しいfileaのfileb内の各ホストにはgrepするためのシェルスクリプトを使用している。

他の方法のいずれかのアカウントまたはホスト名が異なっている一致していますし、その結果を印刷するまでfileb内の各ホスト名をfileaを実行することです。そのアカウントは、与えられたホスト名が存在しないためには何もありません。

私は手動での高速たぶん私は間違っていただろうが、思考することによって、このスクリプトを保存しようとしている

よりエレガントなので、ここに私には難しいだろうな方法はこれまでに付属しているフレームワークです

# ! / bin / shに

ホスト\u003d `猫hosts.txt `
ホスト名\u003d " x "の
\u003d " x "の最後の

ホストの名前を$ ( )の
する
#は、 Awkのロジックをここに来ると
完了した
  #2固定リンク)  
Old 2008年6月5日
本当に日焼け lo tan is offline
登録ユーザー
  
 

参加日: 2008年5月
投稿数: 8
私たちは、達成するには、我々は解決策を打ち出す可能性がありますに基づいて結果の一例を挙げることができる。
  #3固定リンク)  
Old 2008年6月6日
時代 era is offline Forum Advisor  
Herder of Useless Cats (On Sabbatical)
  
 

参加日: 2008年3月
場所: /there/is/only/bin/sh
投稿数: 3652
以下のような意味ですか?


コード:
sed -e 's/.*/^&,/' fileb | grep -f - filea

すべて はgrep バージョンのサポート - fを どうやらオプションが、アイデアだけで何もしてからはgrep fileb これは最初のフィールドのです filea
  #4固定リンク)  
Old 2008年6月6日
synmag synmag is offline
登録ユーザー
  
 

参加日: 2008年6月
投稿: 3
引用:
当初の投稿 時代 View Post
以下のような意味ですか?


コード:
sed -e 's/.*/^&,/' fileb | grep -f - filea

すべて はgrep バージョンのサポート - fを どうやらオプションが、アイデアだけで何もしてからはgrep fileb これは最初のフィールドのです filea
回答いただきありがとうございます。私のバージョンをサポートしていません- Fが残念。のコードを見てどこを探している私のアカウント名を指定するのでしょうか?もし全てのrootアカウントのホスト、アカウント、パスワードのリストを表示したいとか?また、レコードのこの作品は、ホスト名が空白になっていますでしょうか?

この問題を明確にするには、 fileaとホスト名を繰り返しているのブランクがある場合、ルートの記録にどのようにレコードのホスト名を得ることはしないしているホスト名ですか?ホスト名を探している私の前に空白以外のレコードです。

例:

ギボウシ属の草本、 johndoe 、 abc123
は、 root 、 4009dlkj
hostb 、 janedoe 、 rrrrrr

場合には、ホストを根絶するために期待されているfileb

ギボウシ属の草本は、 root 、 4009dlkj

私は以前の非ブランクのレコードからはホスト名を使用しようとするとawkは空白に置き換えていたが、私はエラーが発生していた。私も1ドルを変数に格納できませんでしたし、テストを印刷してください。わたしは知っている セッド 非常に強力ですが、私はこの1行で行われるかもしれないと考えていませんでした。

私はそれを手動で最後の夜を終えた。それを知りたい好奇心の場合、私は再びそれを持っている現時点では便利になるかもしれない。

ティア
  #5固定リンク)  
Old 2008年6月6日
reborg's Avatar
reborg reborg is offline Forum Staff  
管理者
  
 

参加日: 2005年3月
場所:アイルランド
投稿数:4245
引用:
当初の投稿 時代 View Post
すべて はgrep バージョンのサポート - fを どうやらオプションが、アイデアだけで何もしてからはgrep fileb これは最初のフィールドのです filea
該当するが、ほとんどいないのどちらかをサポートするegrep - fまたはfgrep 。
  #6固定リンク)  
Old 2008年6月9日
時代 era is offline Forum Advisor  
Herder of Useless Cats (On Sabbatical)
  
 

参加日: 2008年3月
場所: /there/is/only/bin/sh
投稿数: 3652
ああ、私はあなたの問題を説明誤解。が期待されているここにあなたが言ったんだと思う。


コード:
awk -F , -v acct=root 'NR==FNR { h[$1]++; next; }
{ if($1 == "") $1=host; host=$1; if (! h[$1]) next;
if ($2 == acct) print }' fileb filea

その NR \u003d\u003d FNR 条件に該当する中 fileb 読み込まれている。これは一般的です awkは メインの処理を行う前に補助データをファイルに読み取り用熟語。ホスト名に fileb 配列するために使用される 時間。の次に、スクリプトの本体、ご使用の場合、最初のフィールドが空白の場合、値 主人 変数に使用される $ 1。その後1ドルの現在の値で記憶されるだろう 主人 次の行(秒)が空の最初のフィールドの場合。次に、その配列 時間 現在のホスト名が含まれていない(これには存在ではなかったの意味 fileb)は、現在の行はスキップされます。最後に、 2番目のフィールドには、変数の場合と同じです acct、行印刷されています。

( awkは本当に古い亜種の変数を渡すのをサポートしていない - vを 見つけることができる場合、オプション-この問題を抱えている場合は、参照してください nawk または mawk または のろま お使いのシステム、またはXPG4 Awkの。または直接スクリプトに、変数を補間することができます。 )
  #7固定リンク)  
Old 2008年6月11日
synmag synmag is offline
登録ユーザー
  
 

参加日: 2008年6月
投稿: 3
引用:
当初の投稿 時代 View Post
ああ、私はあなたの問題を説明誤解。が期待されているここにあなたが言ったんだと思う。


コード:
awk -F , -v acct=root 'NR==FNR { h[$1]++; next; }
{ if($1 == "") $1=host; host=$1; if (! h[$1]) next;
if ($2 == acct) print }' fileb filea

その NR \u003d\u003d FNR 条件に該当する中 fileb 読み込まれている。これは一般的です awkは メインの処理を行う前に補助データをファイルに読み取り用熟語。ホスト名に fileb 配列するために使用される 時間。の次に、スクリプトの本体、ご使用の場合、最初のフィールドが空白の場合、値 主人 変数に使用される $ 1。その後1ドルの現在の値で記憶されるだろう 主人 次の行(秒)が空の最初のフィールドの場合。次に、その配列 時間 現在のホスト名が含まれていない(これには存在ではなかったの意味 fileb)は、現在の行はスキップされます。最後に、 2番目のフィールドには、変数の場合と同じです acct、行印刷されています。

( awkは本当に古い亜種の変数を渡すのをサポートしていない - vを 見つけることができる場合、オプション-この問題を抱えている場合は、参照してください nawk または mawk または のろま お使いのシステム、またはXPG4 Awkの。または直接スクリプトに、変数を補間することができます。 )
それはまさに私が望んでいる。 awkは私のバージョンのパスをサポートしていない変数がnawkがあるとすれば完全に働いた。

私は、ブロックを使用するには、ファイルの読み込みを開始しようとしていたが、 Awkのマニュアルをもとに2つのファイルから読み込む方法を見つけ出すことができなかった。 Awkのファイルからどのように説明を読むことを決定ていただけませんか?は括弧の最初のセット内のコードは、 ( )は、 2つ目のファイルを設定ファイルの最初の2つ目の供給を読み取るか?

ありがとうございました。私はより多くのことを学んだ!
Closed Thread

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 12:23午後


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0