サーバホスト名を代入するワンライナーの作成方法

このQ&Aのポイント
  • 数百台のサーバに対してサーバのホスト名を自動で代入する方法を考えています。
  • 現在のワンライナーでの試みは失敗しています。
  • どのような方法でホスト名を代入すれば良いかアドバイスをいただきたいです。
回答を見る
  • ベストアンサー

各行末にサーバのホスト名を代入したいと考えています。

各行末にサーバのホスト名を代入したいと考えています。 ただし数百台のサーバに置換しますので、 サーバ毎にホスト名を手動で変更しての置換はなしでお願いします。 環境: CentOS5.4 例) # cat aaa.txt aaaaaaaaaaaaaa bbbbbbbbbbbbbb cccccccccccccc => 代入後 # cat aaa.txt aaaaaaaaaaaaaa:hoge bbbbbbbbbbbbbb:hoge cccccccccccccc:hoge 私が作成したワンライナーは次の通りです 失敗) # for x in `hostname` ; do sed -e 's/$/:$x/g' aaa.txt ; done aaaaaaaaaaaaaa:$x bbbbbbbbbbbbbb:$x cccccccccccccc:$x どうにもわかりません。 よろしくお願いします。

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

  • ベストアンサー
  • 3edc1qaz
  • ベストアンサー率100% (1/1)
回答No.4

# for x in `hostname` ; do echo "<<< ${x} >>>" ; sed -e "s/$/:${x}/g" aaa.txt ; done これでいけました!ブベラッ!

katsuo2009
質問者

お礼

こ、これです!!!!!ブゲラ

その他の回答 (3)

回答No.3

# hn=`hostname`; sed "s/$/$hn/g" < aaa.txt > out.txt

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.2

sed -e "s/$/:`hostname`/g" aaa.txt

katsuo2009
質問者

お礼

ありがとうございます!できました!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

シングルクォートの中では変数は展開されません.

関連するQ&A

  • sedでの改行置換

    sedを用いた処理で質問があります。 出力結果の改行を置換して一列として表示しようとしているのですが、どうもうまくいきません。 (perlは敢えて使いません) 例えば、以下のようなファイルがあるとして、 $ cat hoge.txt hoge boo bar この出力結果を加工して、「hoge boo bar」のように、 改行をスペースに置換して一行として表示したい場合は、どのようにすれば良いでしょうか? ちなみに、以下のような使い方だと、うまくいきませんでした。 $ cat hoge.txt | sed 's/\ > / /g' $ cat hoge.txt | sed 's/\n/ /' ■実行環境 OS : RedHat EL 1 sedのバージョン : sed-4.0.7-3 宜しくお願い致します。

  • 置換コマンド

    freeBSD5.3を使用している初心者です。 あるディレクトリ以下の全ファイルに対し、一度に内容の文字を置換したいのですがうまくいきません。 例えば /hoge/aaa.txt /hoge/bbb.txt /hoge/ccc.txt と、/hoge以下に3ファイルがあり、このファイルにAAAという文字列があるなら、AAAをBBBにしたいと思っています。 sed s/AAA/BBB/g /hoge/* とすると、置換後の中身が表示はされますが、それに置きかわったファイルは/hoge/以下に保存されていません。(もとのAAAのまま) できたら、/hoge 以下の置換されたファイルを/hoge2以下に同じ名前で保存させたいと思っています。 どなたか是非アドバイスお願いいたします。

  • sedでXMLタグ行末を改行に置換

    WindowsPCからtelnet(teraterm)でLinuxサーバログインしていますが、 XMLファイルの中身のタグの行末を下記のようにWindowsで表示できる改行にして表示したいです。 サーバ上のXMLファイルの中身: <要素1>あいう</要素1><要素2>かきく</要素2><要素3>さしす</要素3> telnetターミナル上で表示したい形: <要素1>あいう</要素1> <要素2>かきく</要素2> <要素3>さしす</要素3> コマンドとしてはsedがあることがわかりましたが、>や<、Windowsの改行をどのように記述したらよいかわかりません。 $ cat hoge.xml | sed のあとにどのようにコマンドを書けばいいでしょうか。

  • cshのsed

    ヤマトです。 cshのsedについて質問します。 環境はRed Had Linux7.2です。 文字列置換でsedを使っています。 置換文字列に'/'が入ってしまう場合正常に動作しません。 原因は分かります。'/'が多いって事ですよね(曖昧な言い方ですみません) どのようにしたら、できるでしょうか? 以下に、サンプルを書きます。 ====SAMPLE.sh(一部抜粋)==== set DATA_DIR = /home/hoge set FILE_NAME = hoge.txt sed "s/__DIR__/$DATA_DIR/g" < FILE_NAME > FILE_NAME.sed ====hoge.txt==== 置換した ディレクトリは __DIR__/です ====hoge.txt.sed(作成したいファイル)==== 置換した ディレクトリは /home/hoge/です どのようにsedしたら良いのでしょうか? 教えて頂けると有り難く思います。宜しくお願いします。

  • プロセス展開・名前つきパイプ・プロセス置換 bash

    質問です。 現在、いまいち仕組みが分かってないまま、 vimdiff hoge.txt <(ssh サーバ名 "cat hoge.txt") とかやって、別サーバとの差分を見たりしてます。 プロセス展開・名前つきパイプ・プロセス置換 など、いろいろな、言い方があるみたいですが、 これの仕組みについて、詳しく知りたいのです。 本とか読んでみたものの、いまいちしっくり来ません。 もし、参考になるページとかあれば是非・・・

  • ブランクを含む環境変数の置換

    こんにちは。 今、UNIX上でファイルのある文字をある環境変数で置換するようなシェルを作成中です。 そこで、以下のようにsedを使用してみました。 cat AAA.txt |sed s/CurFY/`echo $FY`/g AAA.txtの内容 AAA BBB CurFY この時、環境変数$FYがブランクを含まない値の場合 はうまくCurFYを$FYの値に変更できるのですが、$FYに ブランクが入っていた場合は実行できません。 実行例) setenv FY "ACT 2003" cat AAA.txt |sed s/CurFY/`echo $FY`/g sed: コマンドが正しくありません: s/CurFY/ACT となってしまいます。 何かうまい方法はないでしょうか? どうかアドバイスお願いいたします。

  • 参照ファイルを用いて、複数のテキスト置換を一括で行

    参照ファイル(list.txt)を用いて、一括でファイルの中身(test.txt)を置換したいです。以下のようにワンライナーで書いたのですが、以下のようなエラーが出ました。 使っているのはMac Os10.15.5です。 何か問題があるのでしょうか? 間違っている点があれば教えていただきたいです。 sed 's/\([^\t]*\)\t\(.*\)/s|\1|\2|g/' list.list | xargs -I{} sed -i '{}' test.txt sed: 1: "/Users/owner/Desktop/DI ...": invalid command code o sed: 1: "/Users/owner/Desktop/DI ...": invalid command code o <list.txt> AAA aaa 111 222 abc efg ....

  • Qpopperのホスト名について

    初めまして、tinopioと申します。 現在メールサーバの構築をしておりまして、 smtp:Postfix pop:Qpopper にて、構築をしております。 各種設定が無事に終わり、動く状態になったのですが、 Telnetにて110ポートにアクセスした際に、ホスト名が 'localhost,localdomain'となっております。 Trying 127.0.0.1... Connected to ホスト名 (127.0.0.1) Escape character is '^]' +OK Qpopper (version 4.0.9) at localhost.localdomain starting. 2行目のホスト名はhostnameコマンドで出るものと同じです。 どこかに設定場所があるのでしょうか。 くだらない質問で恐縮ですが、何卒ご教授ください。

  • ホスト名でpingが通らない

    お世話になります。 Windows上にVMware Playerをインストールしています。 VMware PlayerにCentOSやUbuntuなどの環境をインストールしました。 hostsにホスト名(IPアドレス ホスト名)を記述しました。 それでコマンドプロンプト上からhostsに記述したホスト名でpingが通るかを確認したところ、pingが通るホスト名と通らないホスト名があります。 ※hostsには複数のホスト名を記述しています。 hostsを変更後、下記のコマンドを実行して試してみましたが結果は変わりませんでした。 ipconfig /flushdns [結果] Windows IP 構成 DNS リゾルバー キャッシュは正常にフラッシュされました。 ping ホスト名 ping 要求ではホスト ホスト名 が見つかりませんでした。ホスト名を確認してもう一度 実行してください。 nslookup ホスト名 サーバー: xxxxx.aaa.bb.cc Address: 999.999.999.999 *** xxxxx.aaa.bb.cc が ホスト名 を見つけられません: Non-existent domain hostsのプロパティを開いて「セキュリティ」を確認しました。 「グループ名またはユーザー名」は下記の通りです。 SYSTEM Administrators Users WindowsのOSは「Windows7」です。 すみませんがアドバイスいただけませんでしょうか。 宜しくお願いします。

  • ローカルホスト名とhostnameを同じにしたい

    MacやLinuxはあまり詳しくないので細かい点はご容赦ください。 会社で使用しているMacOSX(10.6)にソフトをインストールしたいのですが、 どうもMacのローカルホスト名と実際のホスト名が違うことによるエラーでインストールできません。 Macのローカルホスト名は"共有"設定で指定していて、ダイナミック・グローバル・ホスト名のチェックは外しています。 IPは固定です。 また、DHCPサーバは部署外(ネットワーク運営側)、DNSサーバは自部署にあります。 Macのローカルホスト名は欧文のユニークなものなのですが、 あずターミナルを起動すると、以下のように、そのローカルホスト名が表示されるであろう行の先頭に[x000]と表示されます。  X000:~ mymac$ ここで[hostname]と入力しますと、[x000.y000.kaisya.co.jp]と表示されます。 この[x000.y000.kaisya.co.jp]というアドレスは自部署のパソコン設定に必要な設定としては周知されていませんが、 [y000.kaisya.co.jp]の部分はMac設定項目として指定されている"検索ドメイン"の入力項目と同じです。 こういう状況ですが、実際のホスト名をMacのコンピュータ名にする方法はありますでしょうか。 また、ローカルホスト名とhostnameの表示が違う原因はなんなのでしょうか。異常ではないのでしょうか。

    • ベストアンサー
    • Mac

専門家に質問してみよう