[awk]ファイルの○行目を表示

カテゴリ:

Perl使いなのですぐPerlにたよっちゃうんだけど、
やっぱりちょっとしたことをスマートにやるにはawkが有効なんですね。

■ファイルの中身を表示

$ awk "{print}" sample.txt

■ファイルのm行目を表示

$ awk "NR==m" sample.txt

■ファイルのm行目からn行目までを表示

$ awk "NR==m , NR==n" sample.txt

※"NR>=m , NR<=n"ではない

■ファイルのm行目以降(最後まで)を表示

$ awk "NR>=m" sample.txt

[Linux]ファイルを結合するには

カテゴリ:

splitコマンドで分割したファイル(ファイルを分割するには参照)を、元通りに結合するには、catコマンドを使用する。通常、catコマンドはファイルの中身を画面に表示するときに使用するが、本来は複数のファイルを連結するためのコマンドなのだ(catの名前はconcatenateから付けられた)。一般的には、ワイルドカードを使用して以下のように結合する。

$ cat sophos1.* > newfile.png

1つ1つファイルを指定して結合することもできる。

$ cat sophos1.aa sophos1.ab sophos1.ac sophos1.ad sophos1.ae sophos1.af > newfile.png

 ワイルドカードを使うとファイルは昇順に結合されるが、上記のようにファイルを指定する方法を使えば、結合する順番を変更することもできる。

[Linux]xxdコマンド

カテゴリ:

Linuxのコマンドに xxd というバイナリビューアがある。
手軽にバイナリを表示できてよい。

Windows/Linux間で間違いやすい改行コードの差異も発見しやすい。

--- 実行例

# cat test.txt
HOGE
AFO
PIYO
[kony@hostname ~]# xxd test.txt
0000000: 484f 4745 0a41 464f 0a50 4959 4f0a HOGE.AFO.PIYO.

VNCでGNOME

カテゴリ:

OracleインストールのためVNCが必要になったので、
RedHat Enterprise Linux 3でのVNCの設定を以下に示す。

---

1. vncserver の起動

[oracle ]$ vncserver :1

これでホーム直下に .vnc ディレクトリが作成される。
また、RHEL3には普通にインストールすれば、vncserver が含まれている。

2. vncserver の停止

[oracle ]$ vncserver -kill :1

3. xinitrc のコピーとリンク

[oracle ]$ cp /etc/X11/xinit/xinitrc ~/.xinitrc
[oracle ]$ cd ~/.vnc
[oracle ]$ mv xstartup xstartup.org
[oracle ]$ ln -s ~/.xinitrc xstartup

この設定で通常のログイン時のGNOMEを起動できる。
※この設定を行わないとtwmで起動する。

4. vncserver の起動

[oracle ]$ vncserver :1

5. vncviewer で接続

Ultra VNC の vncviewerなどで接続する。
接続形式は、ホスト名:番号なので注意すること。

ログインすると通常のGNOMEが起動されているはず。

---

[参考]
http://www2.starcat.ne.jp/~kanocl/shumi/vnc.htm

ファイル群のある文字列をすべて一括置換する方法

カテゴリ:

・・・なんてたくさんあるけど、Perlによる方法を備忘録として掲載しておく。

perl -i -pe 's/置換前文字列/置換後/g' ディレクトリ・ファイル指定(ワイルドカード可)

[Linux]yesコマンド

カテゴリ:

コマンド名:yes

~man より~

yes はコマンドライン引数をスペースで区切って末尾に改行 (newline) を付加し、 kill されるまで繰り返して表示する。引数が一つも与えられないと、yes は `y' に改行を付加したものを kill されるまで表示しつづける。

要は、

$ yes | cp -p /hoge /piyo

などした場合、複数ファイルについて yes/no 聞かれても、
すべて y (デフォルト) を自動的に打ってくれます。

yes の後ろに文字列を指定すれば、
任意の文字列を打ち続けてくれます。
自動実行シェルを作成する際に役立ちそうですね。

[Linux]大量ファイルの削除・コピー方法(xargs編)

カテゴリ:

大量ファイルをコピーしたり、tarで固めたり、
削除したりするときの方法です。

例えば、ls * としたときに * で展開できる
ファイル名の長さは制限があります。(確か128バイト)

<エラー例>

# ls *
bash: /bin/ls: 引数リストが長すぎます

lsだけでなく cp * , rm * もできなくなります。

そこで xargs を利用します。
例えばOracleの監査ファイル *.aud の削除などに。

方法は以下のとおりです。

■削除

find ${ORACLE_BASE}/admin/bdump -name '*.aud' | xargs /bin/rm -f

■コピー

find ${ORACLE_BASE}/admin/bdump -name '*.aud' | xargs -i% /bin/cp -fp % /backup/

cpのようにfindの内容をコマンドの途中に挿入したい場合は、
-iで挿入文字列を指定し、指定した文字列を挿入したい場所に
記述します(上記の例だと%)。

Windowsブートローダ(NTLDR)からLinuxを起動する

カテゴリ:

WindowsとLinuxを共存させる場合、
さまざまなブート方法が考えられるが、
Windowsをメインに利用しているユーザのために、
Bootpartを利用して、
Windowsブートローダ(NTLDR)からLinuxを起動する方法を紹介する。

続きを読む

[Linux]tar中のエラーについて

カテゴリ:

tar中に
「読み込んだファイルが変更されています」
というエラーが発生したときお読みください。

続きを読む

[Linux]○日前の日付を取得する方法

カテゴリ:

Linuxで○日前の日付を取得する方法は、以下のとおり。

■dateコマンドの場合

・当日の1日前
date -d "1 day ago"

・指定日付の1日前
date -d "日付 1 day ago"

・指定日付の2日前
date -d "日付 2 days ago"
↑days と複数形になっていることに注意

-d は --date でもOK。

<実行例>


# date -d '1 day ago' +%Y%m%d
20060824
# date --date "1 day ago" +%Y%m%d
20060824
# date -d "20060825 1 day ago" +%Y%m%d
20060824
# date -d "20060825 2 days ago" +%Y%m%d
20060823

■Perlの場合

・現在日付の1日前

/usr/bin/perl -e '@tm = localtime(time() - 24*60*60);printf("%4d%02d%02d",(1900+$tm[5]),$tm[4]+1,$tm[3]);'

[Linux]awkで環境変数を利用する方法

カテゴリ:

意外につまづいたので。。。

ENVIRON["ORACLE_HOME"]

のように指定します。

cat hoge | awk '{print ENVIRON["ORACLE_HOME"]"/"$1}'

[URI]
Effective AWK Programming

 組み込み変数

ネットマスク計算ツール

カテゴリ:

複雑なルーティング設定でも、
NetCalcでラクにネットマスク計算ができる。

例えば、

7.24.64.0/255.255.224.0
7.24.64.0/19

どちらでも入力でき、

First Host 7.24.64.1
Last Host  7.24.95.254

のように返ってくるので、すぐに自分の必要なサーバが含まれるかを確認できる。

コマンドラインで行削除

カテゴリ:

今更ですが、Linuxのコマンドライン上で行削除するショートカット。

Ctrl + u

実は最近知ったので。

SQL*Plus などでSQL打ち間違ってその行を消したいときにもどうぞ。

Fedora10にRedmineをインストール

カテゴリ:

社内のプロジェクト管理に実験的にRedmineを使っている。
今回はFedora10にRedmineをインストールしたので、その手順をメモしておく。

続きを読む

Twitter

購読

New Comment

Tag Cloud

広告

広告

Calendar