このコマンドをbashで使用して操作するのに問題があります。以下は、私が持っているものです。どのように 'while ..と作業するのですか。行う..; bashでdoneを実行しました
cat namelist | while read line; do awk '$1 == $line {print $0}' Jan.txt; done
namelist
は、各ライン上の各名前で中継されない名前リストです。私はちょうどこのファイルにnamelist
に名前と一致し、このファイル内の情報の各行に操作を行うにしようとしていますが、私は$1 == $line
をしたとき
ermartin pts/10 Tue Jan 19 09:49 - 10:15 (00:26) 171.66.208.139
sdou pts/6 Tue Jan 19 01:52 - 22:20 (9+20:27) 131.243.186.99
sdou pts/2 Tue Jan 19 01:20 - 22:20 (9+20:59) 131.243.186.99
phu pts/2 Sat Jan 16 12:21 - 15:13 (02:52) lbl-ipsec-7667.dhcp.lbl.gov
phu pts/2 Sat Jan 16 10:07 - 12:01 (01:54) lbl-ipsec-7622.dhcp.lbl.gov
sjames pts/5 Fri Jan 15 12:06 - 13:06 (01:00) lakshmi.lbl.gov
ermartin pts/2 Fri Jan 15 08:36 - 12:43 (04:07) 171.66.208.134
ermartin pts/2 Fri Jan 15 08:31 - 08:36 (00:05) 171.66.208.134
camitche pts/4 Thu Jan 14 15:18 - 20:47 (05:28) 171.66.208.134
ermartin pts/2 Thu Jan 14 13:20 - 15:57 (02:36) 171.66.208.139
ermartin pts/2 Thu Jan 14 12:35 - 13:00 (00:25) 171.66.208.139
sjames pts/2 Thu Jan 14 06:17 - 06:27 (00:09) phys1.als.lbl.gov
sjames pts/2 Thu Jan 14 06:17 - 06:17 (00:00) phys1.als.lbl.gov
ermartin pts/0 Wed Jan 13 15:19 - 15:50 (00:31) 171.66.208.139
ermartin pts/0 Wed Jan 13 07:55 - 08:09 (00:13) c-24-130-14-154.hsd1.ca.comcast.net
:そしてJan.txtは、このような情報のファイルですそれは誤りだと言います。このコマンドを正しく使用するにはどうすればよいですか?
がヶ月でもループすることが可能であり、などのように、タイトルとしてそれらを印刷:
[Jan]
sjames ...hours
sdou ...hours
[Feb]
sjames ...hours
sdou ...hours
1行に1度だけ 'awk'を実行するのは、あなたの入力全体を1つの' awk'呼び出しで処理するのではないのですか? –
btw、問題は 'while read'ループとは関係ありません。変数を 'awk'に渡すことは問題です。 'awk '$ 1 == $ line''では、' awk'はシェル変数 'line'へのコンテンツへのアクセス権を持っていません - これは' while read'ループがなくても真実です。 –
これも、Janを「フィルタリング」するように思えます。'namelist'の名前のtxtファイルだけです。 'grep -F -f namelist Jan.txt'はどうですか? ?がんばろう。 – shellter