fc2ブログ
ブログパーツ アクセスランキング
インフラ情報まとめ
アクセスランキング
サーバー、クライアント関係の構築、運用等のまとめ書きです。旧名 ほぷぅ(。・ω・)ノPCまとめ

ヒア・ドキュメント Here Documents 2




にほんブログ村 IT技術ブログ IT技術メモへ

シェル ヒア・ドキュメント Here Documents 2


LinuxのシェルではTABは補間機能になっているのでうまくいきませんがこういう事例もあります。

$ cat <<- END
> <TAB>This is a
> <space><space>here $DOC.
> END
This is a
here document.

<<のあとにハイフン(-)をつけるとヒア・ドキュメントの部分の行頭のタブ(スペースではありません)は入力されていないものとして処理されます。

入力はヒア・ドキュメントから読み取り、標準出力やエラー出力をファイルにリダイレクトするには
以下のようにします。


command << EOF > stdout 2>stderr
..................
EOF


パイプに渡すことも可能です。

command << EOF | command2
..................
EOF

ヒア・ドキュメントは、キーボードや他のファイルからの入力を必要としません。
シェルプログラムの中であるコマンドに対してきまった操作を行わせることができます。
エディタコマンドに対する入力もできてしまいます。
edコマンドを使っての例です

edコマンドは、-オプションを指定すると画面にメッセージを出力しません。
シェルプログラムの中で実行するため、余計なメッセージは出さないようオプションをつけて起動します。

次の例では読み込んだファイルをさかさまに並べてみます。

ed - file <<- !
g/^/m0
w
1
!

edでfileというファイルをオープンします。
次の!の行までがヒア・ドキュメントの部分です。
キーボードから行う入力と同じことを書き込みます。
<<のあとには任意の文字を書けますので前回ではEOFとしていました。ここでは!にしています。

g/^/m0

の意味は、最初のgでこのファイルの中で一致するパターンを探します。
何に一致するものを探すかという指定が、この直後に続く /で囲まれた文字列です。
そこには ^ があります。これは行頭を表します。


よってファイルの中の全部の行に対して処理をすることになります。
次にm0は0行目に移動しないさいという意味です。
そのファイルの先頭に移動させることを意味します。

すべての行に一致するので最初は一行目です。この行をファイルの最初に移動させます。
次に2行目です。これをまたファイルの最初にもっていきます。これを順にファイルの最後までを繰り返していけば行が全部さかさまになります。

最終行が最初の行に移動した時点で、このコマンドは終わります。
次のwコマンドで上書き保存します。
さらに、qコマンドでedコマンドを終了します。
!ヒア・ドキュメントが終了します。


実例です。testdocを用意します。中身はこのようになっています。
[root@localhost sh]# cat testdoc
1-Line
2-Line
3-Line
4-LIne

実行します。
[root@localhost sh]# ed - testdoc <<- !
> g/^/m0
> w
> 1
> !
4-LIne

逆に並べ替えられました。
[root@localhost sh]# cat testdoc
4-LIne
3-Line
2-Line
1-Line


プログラムの中で画面に表示する必要はないのでviよりexを選択することになります。
viのビジュアル機能を削ったのがexになります。


シェルスクリプトの中でedやexといったエディタを起動し、ファイルを編集できるのは非常に有用です。
ヒア・ドキュメントの利用の真骨頂です。正規表現を駆使して操作の幅を広げることが可能です。


関連記事







テーマ:UNIX/Linux - ジャンル:コンピュータ


  1. 2012/12/11(火) 19:30:30|
  2. Linux/Unix シェル
  3. | トラックバック:0

トラックバック

トラックバック URL
http://pcmemorin.blog.fc2.com/tb.php/459-76e8986b
この記事にトラックバックする(FC2ブログユーザー)


サイトマップ・お奨め記事

CentOS7 まとめ
Ubuntu14 まとめ
Ubuntu12用無線アダプタ紹介
Ubuntu12 まとめ
Server 2008R2 まとめ
SCCM2012R2 まとめ
Windows10 アップグレード
Windows7 まとめ
Windows7 SSD まとめ
Windows8 まとめ
EaseUS Todo Backup Server
Linux Destbision まとめ
Linuxコマンド関連Index
Zorin8.1まとめ
Fedora17まとめ
Fedora15まとめ
VB Script まとめ
USB3.0で快適バックアップ
リンク集・メール


スポンサードリンク


リンク


サイト登録Paseon

・はじめての自宅サーバ構築 - Fedora/CentOS -

・Fedoraで自宅サーバー構築

・CentOSで自宅サーバー構築

・ぼくんちのTV別館

・ネットセキュリティブログ

・まとめ横丁

・オールフリーソフト


相互リンク更新情報
BookMark
GPUベンチマーク(ドスパラ)
VMware OS仮想化
EaseUS
Fedora releases ISO
【Http外部からの表示確認】
ポートスキャンチェック
IPA情報処理推進機構
無料DNS ieServer
無料DNS-MyDNS
yahooログイン履歴チェック
メール不正中継拒否テスト
Fedora Project
allbootdisks
Edy Viewer
ESXi動作実績ハードウェア@Wiki
IEEE Standards

---ライセンス認証解除系リンク---
ShadowProtect Personal
.NET製品
弥生



--所有サーバーWiki--
NEC Express5800/S70
HP ProLiant ML110G5
PRIMERGY TX100 S3

このブログをリンクに追加する

カテゴリ

Linux (45)
Linux-CentOS7 (70)
Linux-Ubuntu14.04 (87)
Linux-Ubuntu12.04 (76)
Linux-Zorin8.1 (36)
Linux-Fedoras.soft (19)
Linux-Fedora18 (11)
Linux-Fedora17 (39)
Linux-Fedora15 (60)
Linux-Fedora11 (36)
Linux-Fedora16 (1)
Linux-Security (3)
Linux/Unix シェル (38)
Linux Distribution (53)
仮想OS (31)
Windows Server 2008 (254)
Windows Server 2012 (30)
Windows Server コマンド (39)
Windows Server アプリ (14)
Windows (40)
Windows 10 (3)
Windows 7 (59)
Windows 8 (257)
Windowsアプリ (23)
Windows 8 アプリ (29)
Windows レジストリ (6)
Windows BAT (17)
ネットワーク (5)
MySQL (1)
ニュース (8)
ハードウェア (11)
Windows VBScript-Basp21 (1)
VBScript (29)
Windows Vista (1)
Windows グループポリシー (3)
Security (6)
未分類 (4)
クールなアイテムまとめ (5)
Game (1)
PowerShell (4)


Linux ブログランキングへ

カテゴリ2

SCCM Backup 遠隔操作 VirtualBox FeliCaポート/パソリ ESXi 

カウンター

RSSリンクの表示

アクセスランキング

[ジャンルランキング]
コンピュータ
167位
アクセスランキングを見る>>

[サブジャンルランキング]
その他
29位
アクセスランキングを見る>>



フィードメーター - ほぷぅ(。・ω・) ノ PCまとめ Linux,Win,自宅サ..


Windows ブログランキングへ

にほんブログ村 IT技術ブログ IT技術メモへ
にほんブログ村

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

 



Linux ブログランキングへ





<%plugin_third_title>

<%plugin_third_description>

<%plugin_third_content>

<%plugin_third_description2>