Quantcast
Channel: HP-UX –俺的備忘録 〜なんかいろいろ〜
Browsing all 99 articles
Browse latest View live

Linuxでawk/sedを使ってファイルから奇数行・偶数行のみを抽出する

Linuxで、awkやsedを使ってファイルから奇数行・偶数行のみを抽出する場合は、以下のようにする。 ●awk awk 'NR%2==0' # 偶数行のみ抽出 awk 'NR%2!=0' # 奇数行のみ抽出 blacknon@BS-PUB-UBUNTU-01:~$ cat -n /tmp/test4.txt 1 aaaaa 2 bbbbb 3 ccccc 4 ddddd 5 eeeee 6...

View Article


sedでファイルの前から○行とか、後ろから○行に対してのみ処理を行わせる

sedで、例えばファイルの頭から数えて○行、後ろから数えて○行に対して処理を行わせる、といった場合、以下のようにする。 前から 前から数行を指定するのは簡単で、以下のようにすればよい。 sed '1,n 処理内容' blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test5.txt 1 aaaaa123 2 bbbbb123 3 ccccc123 4 ddddd123 5...

View Article


Image may be NSFW.
Clik here to view.

sedで最後に条件にマッチしたパターンのみ処理する

sedで最後に条件にマッチしたパターンのみ置換をする場合、sed単体で実現するのはちょっと難しい。 じゃあどうすればよいのかというと、一度tacで反転させて、最初にマッチした行のみ処理を行ったのち、再度反転させてやるのが楽だ。 tac | sed '1,/パターン/ 処理内容' | tac blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test5.txt 1...

View Article

sedやgrepなどを使ってLinux/UNIXでダブルクォーテーション・シングルクォーテーションに囲まれた文字列を抽出する

sedやgrepなどを使って、ダブルクォーテーションやシングルクォーテーションに囲まれた文字列を抽出する方法についてを記述する。 基本的にはsedでいいと思うけど、念のため他のやり方についても書いておく。 1.sed sedでダブルクォーテーションやシングルクォーテーションに囲まれた文字列を抽出する場合は、以下のようにする。 sed 's/^.*"\(.*\)".*$/\1/' #...

View Article

Image may be NSFW.
Clik here to view.

sedで改行を置換・削除する

sedでは、普通に「\n」を指定しただけだと改行の削除や置換を行うことができない。 blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test1.txt 1.aaa 2.bbb 3.ccc 4.ddd blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test1.txt | sed 's/\n//g' 1.aaa 2.bbb 3.ccc 4.ddd...

View Article


agrep(tre-agrep)コマンドであいまい検索を行う

通常のgrepコマンドではあいまいな検索は行えないのだが、時折うろ覚えなキーワードでもgrepしてもらいたいこともある。 そんなときは、あいまい検索を行えるgrepとして『agrep』コマンドというものがある。 1.インストール まずはインストールから。 以下のコマンドでインストールできる。 sudo yum install agrep # RHEL系 sudo apt-get install...

View Article

findで見つかったファイルをアーカイブ化・圧縮する

LinuxやMac OS Xを使っていると、findコマンドで取得したファイルをすべてアーカイブ化したり圧縮したりしたいことがある。 そんなときは、以下のようにすればよい。 1.tarでアーカイブ化する GNU拡張のfindコマンドを使う場合 GNU拡張のfindコマンドを使っている場合、-execでtarコマンドを呼び出してやればよい。...

View Article

Image may be NSFW.
Clik here to view.

find + agrepコマンドでファイル名のあいまい検索を行う

時々、ファイル名やそのキーワードをちゃんと記憶してなくて、何を検索すればよいかもうろ覚えになってるときがある。 ただ、残念ながらfindコマンドではあいまい検索に対応しておらず、似たようなコマンドもなさそうだ。 そのため、ファイルのあいまい検索を行う場合は、findコマンドで指定したパス配下の内容をすべて出力させて、その内容をagrepであいまい検索させるのがよさそうだ。 以下、コマンドの実行例。...

View Article


awkで最後の行(最終行)のみ処理を行わせる

awkで、最後の行のみを出力して処理を行わせる場合、以下のようにすればよい。 awk 'END{処理内容}' [root@BS-PUB-CENT7-01 ~]# cat /tmp/test4.txt 1 aaaa 2 bbbb 3 cccc 4 dddd 5 eeee 6 ffff [root@BS-PUB-CENT7-01 ~]# [root@BS-PUB-CENT7-01 ~]# #...

View Article


awkで2行目以降の行のみ処理を行う

awkで2行目以降の行のみで処理を行わせる場合、NR(awkで何行目かを認識する変数)を用いて、以下のようにすればよい。 awk 'NR>1{処理内容}' blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test.csv id,user,value 1,aaa,1223 2,bbb,3333 3,ccc,855 4,ddd,998 5,eee,24354...

View Article

awkで7桁以上の数字を科学表記法(指数表記)で表示させないようにする

awkでは、桁数が多い数字(小数点以下を含め、7桁以上)の出力を行うと、デフォルトだと科学表記法(10のべき乗。指数表記とも)で表示されてしまう。 [root@BS-PUB-CENT7-01 ~]# echo "123456789.87654321 94" |awk '{print $1/$2}' 1.31337e+06...

View Article

awkで指定した列から後ろ全部を出力させる

awkで、指定した列から後ろの列すべてを出力させる場合、forで繰り返し処理をさせるのが楽だ。 awk '{c="";for(i=指定する列;i<=NF;i++) c=c $i" "; print c}' blacknon@BS-PUB-UBUNTU-01:~$ head /tmp/test7.txt aaaaa 123 test 1 2 bbbbb 123 test 2 2 ccccc...

View Article

awkで最後のフィールドのみ出力させる

awkで、最後の行の最後のフィールドのみを出力させる場合は、以下のようにすればよい。 awk 'END{print $NF}' blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test7.txt aaaaa 123 test 1 2 bbbbb 123 test 2 2 ccccc 123 test 3 2 ddddd 123 test 4 2 eeeee 123...

View Article


awkでの四則演算や割り算の余り、べき乗を求める方法

awkで四則演算や割り算の余りを求める場合。 これは非常に簡単で、以下のようにすればよいだけだ。 awk '{print x + y}' # 加算 awk '{print x - y}' # 減算 awk '{print x * y}' # 乗算 awk '{print x / y}' # 除算 awk '{print x % y}' # 剰余(割り算の余り) awk '{print x ^ y}'...

View Article

Image may be NSFW.
Clik here to view.

awkで最後の列からn個前の列を抽出する

awkで最後の列からn個前の列を抽出する場合は、以下のようにすればよい。 awk '{print $(NF-n)}' [root@BS-PUB-CENT7-01 ~]# cat /tmp/test.txt aaa="1" bbb="2" ccc="3" ddd="4" aaa="11" bbb="21" ccc="31" ddd="41" aaa="12" bbb="22" ccc="32"...

View Article


awkで組み込み関数のgensubを使って指定した列や変数の値だけを置換する

awkで置換するといえば組み込み関数のsub関数やgsub関数だが、これらはawk内で代入した変数の置換をするような使い方ができない($0で受けた内容すべてに対しての置換はできる)。 定義した変数や特定の列に対してのみ置換をする場合は、gensub関数を利用するとよいだろう。 gensub("置換前","置換後",置換位置(NUM)[,置換対象文字列(列や変数名など)])...

View Article

Image may be NSFW.
Clik here to view.

grepで正規表現を用いてIPアドレス・MACアドレスを抽出する

ネットワーク回りのログや調査をしていると、IPアドレスやMACアドレスだけをgrepで抽出したいことがある。 その場合は、それぞれ以下のようにgrepを実行するとよい。 IPアドレス grep -E '([1-2]?[0-9]{0,2}\.){3,3}[1-2]?[0-9]{0,2}' [ssh-user@BS-PUB-CENT7-01 .ssh]$ echo...

View Article


Image may be NSFW.
Clik here to view.

公開鍵に特定のコマンド(sshとかscp)を指定してssh接続時にそのコマンドしか実行できないようにする

sshの踏み台サーバの構築で、ユーザにログイン先の公開鍵が見れないようにしたい。 ということは、踏み台サーバへのssh接続時にcatとかその辺がつかえないようにして、sshコマンドだけを利用可能にすればいいのだけど、そんなやり方あるのかなぁ…と思って調べてみたところ、サーバ側の鍵ファイルに使えるコマンドを設定してやることで実現できそうだ。今回は、sshの踏み台サーバとしてCentOS 7を利用する。...

View Article

Image may be NSFW.
Clik here to view.

cpコマンドで一つのファイルを複数のディレクトリにコピーする

cpコマンドでは、「複数のファイルを1つのディレクトリに」コピーすることは簡単にできるのだが、「1つのファイルを複数のディレクトリに」コピーする場合はちょっと工夫が必要になる。 といっても基本的な方法で、xargsコマンドを使って複数ディレクトリを指定してcpコマンドを実行してやるだけだ。 xargs -n 1 cp -v file <<< "dir1 dir2 dir3" #...

View Article
Browsing all 99 articles
Browse latest View live