- ベストアンサー
ユーザごとのアドレスを追記する方法について
noname#223623の回答
- ベストアンサー
`man join`から引用(Debian Etchで確認)。 FILE1 と FILE2 は実行前に join フィールドの昇順にソートして おかなければならない (数値順のソートはだめ) なので、 $ sort list.2 > list.2.sort $ join list.1 list.2.sort user01 1991/01/01 1st first 01_takeuchi@mailaddres user02 1992/02/02 2st second 02_itou@mailaddres user03 1993/03/03 3rd second 03_miyashita@mailaddres user04 1994/04/04 4th fourth 04_sawada@mailaddres となる。 困ったときはマニュアル読もう。
関連するQ&A
- マッチするユーザのアドレス抜き出し方法
ユーザ名のあるfile.1からfile.2に 記述されているユーザのアドレスを 抜き出して、「ユーザ、メールアドレス」 という並びのファイルを作りたくがんばってます。 なかなかうまくいかないので教えてくださいっ file.1 yoshida sawada sumida file.2 me-ruadoresu sawada, yoshida mailaddres sumida hayashi hamada スクリプトの一部 while read line ;do USER=` echo "$line"| awk '{print $1}'` ADDRES=` cat file.2 | awk '{if(match($1,"$USER")) print $2}'` echo $USER $ADDRES >> addres-file done < file.1 最終的にこうなって欲しいのです。 addres-file yoshida me-ruadoresu sawada me-ruadoresu sumida mailaddres 今はADDRESの部分が定義されず、addres-fileには ユーザ名しか出てきません。ADDRESの($1,"$USER")ここの部分で USERが読み込まれていないようなのです。 どうしたらよいでしょうか
- ベストアンサー
- Linux系OS
- 日本語が入った本文をユーザごとにメール送信したい
1行ごとにユーザの情報が記述された内容を 日本語でユーザごとにメールしたいのです。 file.1の中身 01_hamada 1991/01/01 1st 10 01_hamada@メールアドレス 02_yoshida 1992/02/02 2st 20 02_yoshida@メールアドレス 03_satoshi 1993/03/03 3rd 30 03_satoshi@メールアドレス 04_kinosita 1994/04/04 4th 40 04_kinosita@メールアドレス test.sh スクリプト #!/bin/bash while read line; do DAY=`echo "$line" | awk '{print $2}'` RANK=`echo "$line" | awk '{print $3}'` POINT=`echo "$line" | awk '{print $4}'` ADDRES=`echo "$line" | awk '{print $5}'` mail -s test "$ADDRES" < messagebody.txt done < file.1 messagebody.txtの中身 あなたがテストを受けた日は$DAYです。 順位は$RANKです。 点数は$POINTでした。 OSは Red Hat Enterprise Linux ES release 4 (Nahant Update 4) です。これでは日本語ファイルを絡めたスクリプトを 成立させることはできないのでしょうか このままだと、文字化けして$DAY,$RANK,$POINTが そのまま文字列として送信されてしまうのです。 なにか良い方法はないでしょうか
- ベストアンサー
- Linux系OS
- aliasesの1フィールド目をメールアドレスへ変換して2フィールド目も表示する
aliasesファイルの ドメイン.com~user: user01,user05,外部メールアドレス,user04, となっている行から1フィールド目をメールアドレスに変換して 2フィールド目のユーザを1フィールド目に移動し、さらに 特定のユーザ名前だけを残すことはできますでしょうか こうなってほしいのです↓ user05 user@ドメイン.com 先ほど以下のコマンドでメールアドレスに変換することは できたのですが、関連するユーザを同じ行に表示させたいのですが、 このままではどのユーザのメールアドレスかわからないのです。 awk -F: '/~.*:/{split($1,a,"~"); printf "%s@%s\n", a[2], a[1]}' < /etc/mail/aliases どのようにしたら希望通りになりますでしょうか
- ベストアンサー
- Linux系OS
- UNIXコマンド "grep" "find" の使い方教えて下さい。
1)以下(1)、(2)を検索したいとします。 (1)"wrk_str"という文字列の記述があるファイル名 (2)tmp_file.c という名前のファイル名 2)ディレクトリ構成が以下になってるとします。 /home/users/複数のディレクトリが存在/複数のディレクトリが存在/複数のファイルが存在 3)/home/users/ 配下に検索したい文字列、ファイルがあるとした場合、どのように 探せばいいでしょうか? /home/users/配下で得に条件なしでgrepすると、"Arg list too long"(量が多い?)の メッセージが出て、検索できませんでした。 UNIXコマンドに詳しい方、宜しくお願いします。 それ以外にも、色々検索方法知っていたら教えて下さい!!
- ベストアンサー
- Linux系OS
- aliasesの1フィールド目をメールアドレスへ変換する
aliasesの1フィールド目に記述されている文字列をアドレスへ変換したいのですが、以下の文字列をuser@ドメイン.comにするにはどうしたらよいでしょうか ドメイン.com~user: おそらくawkとか?を使って先頭文字列から「~」 までの文字列【ドメイン.com】抜き出して 最後の「:」から「~」 の文字列【user】を抜き出して 2つの文字列の間に@を入れると思うのですが どのようなコマンドにしたらうまくいくでしょうか
- ベストアンサー
- Linux系OS
- joinコマンド
joinコマンド 自宅環境で再現できないのですが、 # cat tes1 1 2 3 4 5 ・ ・ ・ 110 # cat tes2 3 27 4 18 9 18 17 100 19 20 33 55 ・ ・ ・ 110 28 # join -a1 tes1 tes2 と実行したときに、tes2の10以下の数字までしか結合されず 1 2 27 3 18 4 18 5 6 7 8 9 19 10 11 ・ ・ ・ 110 のように表示されてしまいます。 もともとのtes1,tes2はsqlの結果を整形、タブ区切りにしています。 問題の起きたコードそのままではないのですが、 似たような経験をした方や、コマンドに詳しい方がいましたら、 原因についてアドバイス頂けると幸いです。
- ベストアンサー
- Linux系OS
- アクセスで、リレーションシップをかけると更新出来ない?
すみません。以下の事項を教えて下さい。 テーブル名:T_メール本体 (フィールド項目は) ID(主キー) 宛先名 件名 本文 テーブル名:T_宛先リスト (フィールド項目は) 名前 アドレス この2つのテーブルに、宛先名と名前のフィールドをリレーションシップをかけると未定義と出ます。このクエリー:SELECT T_メール本体.宛先名, T_メール本体.件名, T_メール本体.本文 T_宛先リスト.アドレス FROM T_メール本体 LEFT JOIN T_宛先リスト ON T_メール本体.宛先名 = T_宛先リスト.名前; は、ただ表示が出来るだけで、内容の変更更新、追加が出来ないんです。どこかがおかしいんでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- fmlの登録者リストって
ユーザ登録を /usr/local/fml/makefml adduser ML名 登録者メールアドレス で登録を何人かしました. しばらくしてMLが2通送られるということが発生しました. MLの登録がうまくいってないのかと思い 登録者リストを見られないかコマンドを探しましたが 見つけられませんでした. コマンドがないのでしょうか? それとも特別の方法を行わないといけないものなのでしょうか? いまいち理解力にかけていますのでどなたかお助けください.
- ベストアンサー
- その他(OS)
- SSHでログイン後にsuできない。
WindowsからPuTTYを使ってサーバ(FreeBSD7.0)に接続し、rootになろうとしています。 PuTTYを使って、一般ユーザでログインすることはできるのですが、その後、rootになろうとsuコマンドを打つと、以下のようになり、rootになれません。 【PuTTYのコンソール】 $ su Password:(rootのパスワードを入力) su: Sorry $ サーバ側でsshdのログを見ると以下のようになっております。 # /usr/sbin/sshd -ddd : Bind to port 22 on 0.0.0.0 failed: Address already in use. Cannot bind any address. 22番ポートがすでに使用されているかと思い、以下のコマンドを打ってみました。 # sockstat | grep 22 (一般ユーザ) sshd 772 3 tcp4 (サーバのアドレス):22 (クライアントのアドレス):51401 root sshd 769 3 tcp4 (サーバのアドレス):22 (クライアントのアドレス):51401 root sshd 686 3 tcp4 *:22 *:* 上記の2番目で、すでにクライアントからrootで接続しているように見えます。クライアントからは一般ユーザを使用して接続しているのみです。なぜこうなるのか全くわかりません。 この一般ユーザはwheelグループに入れてあり、通常はsuでrootになれると思うのですが、、、 見当違いなのか、また他に原因が考えられるのか、ご教授頂けないでしょうか?
- 締切済み
- ハードウェア・サーバー
- UNIXコマンドのjoinについて
-------------- -------------- 1 XX XXX 1 xx xxx 2 YY YYY 2 yy yyy 3 ZZ ZZZ 3 zz zzz ~ ~ -------------- -------------- UNIXコマンドのjoinを用いて上の二つのファイルを結合させ、 ---------------------- 1 XX XXX xx xxx 2 YY YYY yy yyy 3 ZZ ZZZ zz zzz ~ ---------------------- としたかったのですが、一列目の数字が急に変化するとそれ以降の行が出力されなくなります。(例えば、100の次が1000になった時など) どのようしたらこのような事が防げるのでしょうか? もしjoinでは防げないなら、joinのように2つのファイルの1列目の数字が同じだった時に結合して出力してくれるプログラムを書ける方がいたら教えていただきたいです。 perlかC++だと助かります。よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
お礼
ありがとうございます。 確かにsortしたらうまくいきましたっ いい感じで完成しそうです!!