• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:joinコマンドで、ユーザごとのアドレスを付け足す)

ユーザごとのアドレスを追記する方法について

このQ&Aのポイント
  • joinコマンドを使用してlist.1のユーザに関連するメールアドレスをフィールド5番目にユーザのアドレスに追記する方法が知りたいです。
  • joinコマンドとgrepコマンドを組み合わせてlist.1のユーザに関連するメールアドレスを抽出し、5フィールド目にユーザのアドレスを追記する方法が知りたいです。
  • joinコマンド以外で、list.1の形式のままで5フィールド目にユーザのアドレスを追記する他の方法があるか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#223623
noname#223623
回答No.4

`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 となる。 困ったときはマニュアル読もう。

r-linux
質問者

お礼

ありがとうございます。 確かにsortしたらうまくいきましたっ いい感じで完成しそうです!!

全文を見る
すると、全ての回答が全文表示されます。

関連する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が読み込まれていないようなのです。 どうしたらよいでしょうか

  • 日本語が入った本文をユーザごとにメール送信したい

    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が そのまま文字列として送信されてしまうのです。 なにか良い方法はないでしょうか

  • 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 どのようにしたら希望通りになりますでしょうか

  • 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コマンドに詳しい方、宜しくお願いします。 それ以外にも、色々検索方法知っていたら教えて下さい!!

  • aliasesの1フィールド目をメールアドレスへ変換する

    aliasesの1フィールド目に記述されている文字列をアドレスへ変換したいのですが、以下の文字列をuser@ドメイン.comにするにはどうしたらよいでしょうか ドメイン.com~user: おそらくawkとか?を使って先頭文字列から「~」 までの文字列【ドメイン.com】抜き出して 最後の「:」から「~」 の文字列【user】を抜き出して 2つの文字列の間に@を入れると思うのですが どのようなコマンドにしたらうまくいくでしょうか

  • 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の結果を整形、タブ区切りにしています。 問題の起きたコードそのままではないのですが、 似たような経験をした方や、コマンドに詳しい方がいましたら、 原因についてアドバイス頂けると幸いです。

  • アクセスで、リレーションシップをかけると更新出来ない?

    すみません。以下の事項を教えて下さい。 テーブル名: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の登録がうまくいってないのかと思い 登録者リストを見られないかコマンドを探しましたが 見つけられませんでした. コマンドがないのでしょうか? それとも特別の方法を行わないといけないものなのでしょうか? いまいち理解力にかけていますのでどなたかお助けください.

  • 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になれると思うのですが、、、 見当違いなのか、また他に原因が考えられるのか、ご教授頂けないでしょうか?

  • linuxのjoinコマンドがうまくいきません。

    $ cat aaa.txt 2014年4月30日 11440 2014年4月28日 11438 2014年4月27日 11437 2014年4月26日 11436 2014年4月25日 11435 2014年4月24日 11434 2014年4月23日 11433 2014年4月22日 11432 2014年4月21日 11431 2014年4月20日 11430 2014年4月19日 11429 2014年4月18日 11428 2014年4月17日 11427 2014年4月16日 11426 2014年4月15日 11425 2014年4月14日 11424 2014年4月13日 11423 2014年4月12日 11422 2014年4月11日 11421 2014年4月10日 11420 2014年4月9日 11419 $ cat bbb.txt 2014年4月30日 264 2014年4月28日 265 2014年4月25日 265 2014年4月24日 264 2014年4月23日 263 2014年4月22日 262 2014年4月21日 263 2014年4月18日 263 2014年4月17日 261 2014年4月16日 261 2014年4月15日 259 2014年4月14日 256 2014年4月11日 256 2014年4月10日 258 2014年4月9日 256 $ join aaa.txt bbb.txt 2014年4月30日 11440 264 2014年4月28日 11438 265 join: bbb.txt:5: is not sorted: 2014年4月23日 263 join: aaa.txt:4: is not sorted: 2014年4月26日 11436 2014年4月9日 11419 256 $ となり、2014年4月25日など共通の行がjoinされません。 原因と対策をご教示いただけますでしょうか。 環境はLubuntu14.04lts-64bit、join (GNU coreutils) 8.21です。 よろしくおねがいします。