Linuxコンソール上で行の要素をソートさせる
以下のようなファイルがあったとして、それを行ごとでソートするにはどうすればよいのだろう?とふと思ったので、調べてみた。 ●cat /tmp/test2.txt 3 154 2 7 331 4 325 1 14 23 79 2 94 153 結論としては、whileで行ごとに一度sortコマンドでソートが行えるようにしてソートさせればよい。 cat 対象ファイル | while read line;...
View ArticleLinuxコンソール上でファイルからランダムに行を抽出する
Linuxコンソール上で、指定したファイルからランダムに行を取得させたい時がある。 そんなときは、shufコマンドを用いれば良い。 以下のようにコマンドを実行することで、指定されたファイルからランダムに「-n N」で指定したN行を抽出する。 shuf -n N ファイルPATH [root@BS-PUB-CENT7-01 ~]# shuf -n 1 /tmp/test1.csv 9,iii,3,12...
View Article【翻訳】OSを自転車にたとえてみた
久々に翻訳系。 各種OSを、自転車の種類にたとえてみるという記事。 元ネタはこちらの「If Computers Were Bikes, What Bikes Would They Be?」という記事。 2009年の記事なのでちょっと古いけど、自転車に例えるというのが珍しいのでちょっとおもしろかった。 至らない翻訳だと思うのですが、その辺は多めに見てもらえれば… MacOS X = フィクシーバイク...
View Articleawkで列の合計を求める
ちょっとやり方ど忘れしてググった際にうまいこと出てこなかったので、念のため残しておく。日本語って難しいなぁと…。 1.指定した列の合計を求める 特定の列全体の合計を求める場合は、以下のようにforで対象の列を足していく。 例えば2列目の合計のみを求める場合なら、以下のようにコマンドを実行する。 awk '{a+=$2} END{print a;}' ファイルPATH...
View Articlebashで四則演算(+-×÷)や割り算のあまり(剰余)を求めるような簡単な計算をする
LinuxやUNIXのシェルでよく利用されるbashで、四則演算や割り算のあまりを求めるといったやり方について。 bashでは、「$(( 計算文 ))」のように記述することで、簡単な計算を行うことができる。 四則演算 $(( 値1 + 値2 )) # 足し算 $(( 値1 - 値2 )) # 引き算 $(( 値1 * 値2 )) # 掛け算 $(( 値1 / 値2 )) # 割り算...
View ArticleLinux/UNIXでファイルの文字コード(UTF-8 or Shift_JIS or EUC-JP…)を確認する
Linux/UNIXで、指定したファイルの文字コード(UTF-8とか、EUC-JPとか)を調べる場合は、以下のような方法がある。 1.fileコマンドで調べる UTF-8か、EUC-JPなのか、それともShift_JISなのか… 日本語のファイルだとはわかっていて、その違いを調べるだけであれば、fileコマンドで事足りる。...
View ArticleLinuxのdateコマンドで指定した月の月末日を取得する
(前にも似たようなの書いてるけど、)dateコマンドで指定した月の月末日を取得する場合は以下のようにする。 date -d "-1 days + 1 month $(date -d '-1days + 1 month <年>/<月>'/1+%Y%m01)" blacknon@BS-PUB-UBUNTU-01:~$ date -d "-1 days + 1 month...
View Article『もしOSをXXXに例えたら』系の記事をまとめてみた
以前、『もしプログラミング言語をXXXに例えたら』系の記事をまとめたが、今度はOSを何かに例えた記事のまとめ。 各OS(Mac,Linux,Windows)で比較している記事 【翻訳】UNIX,Windows,Linux,Mac OS X…もしOSを家に例えるなら 元ネタはこちらの「What If Unix, Windows, Linux And OS-X Were Houses?」。...
View ArticleLinuxコンソール上で同じ文字列を繰り返して出力させる
Linuxコンソール上で、同じ文字列を繰り返し出力させるにはどうすればよいだろう?という疑問が出てきたので、少し調べてみた。 perlやpythonを呼び出すの含め、以下のような方法があるようだ。 bashのprintfやseq printfをうまく使ったり、seqやprintfをtrとうまく組み合わせるといいだろう。 (○のとこに繰り返させる数字を入れる) printf %○s | tr ' '...
View ArticleLinuxコンソール上でアルファベット順にn文字ずらした文字列を得る(シーザー暗号)
アルファベット順にn文字ずらした文字列を生成する、いわゆるシーザー暗号(Caesar cipher)。 これをLinuxコンソール上でワンライナーで作成させるには、どうすればよいのだろう?と思ったので、少し調べてみた。 とりあえず、以下のようにコマンドを実行することでアルファベットの小文字を任意の数ずらすことが可能だ。 (○にずらす数を入れる) コマンド | tr $(printf %○s | tr...
View Articlebashやsed、trコマンド…Linuxコンソール上で小文字⇔大文字変換する方法いろいろ
小文字⇔大文字の変換方法については、以前にsedでの処理方法について記述したことがあったが、処理の仕方としてはsedだけではなく、Bashの構文を使ったりtrやawkを使ったりといろいろなアプローチの仕方がある。 今回は、それらについてを紹介する。 1.Bash 4.0以降での方法 Bash 4.0以降では、構文として変数を呼び出す際に小文字⇔大文字の変換をさせることができる。 大文字化...
View Articlegrep(+その他のコマンド)でor,and,not検索を行う
grep(+その他のコマンド)でor検索、and検索を行う場合、以下のようにすればよい。 or検索を行う or検索は簡単で、「-e」オプションを使うことで複数条件での検索が可能だ。 grep -e 'キーワード1' -e 'キーワード2' ファイルPATH その他、以下のようにパイプでつなげてやることでor検索が行える。 grep "キーワード1\|キーワード2" ファイルPATH grep...
View ArticleLinuxコンソール上で単語の1文字目をすべて大文字にする
ふと、Linuxコンソール上で行のすべての英単語の1文字目を大文字にするにはどうすりゃいいのかな?と思ったので調べてみた。 やはり、awkでやるのが簡単そうだ。 awk '{for (i=1;i<=NF;i++) {sub(".",substr(toupper($i),1,1),$i)} print}' [root@BS-PUB-CENT7-01 work]# cat test.txt...
View Articlesedで文字列を横にn文字ずらしていく(スライドしていく)
先日、シーザー暗号についての@ebanさんの解法でそういうのがあったので、後からの見返し用に記述しておく。 (GNU sedでしか見てないので注意。) sedで、行を横にn文字ずらしていき、元あった文字は行頭に戻る(ループする)ような処理をする場合、以下のようにする。 sed -E 's/^(.{n})(.*)/\2\1/' [root@BS-PUB-CENT7-01 ~]# sed -E...
View Article覚えておくと操作が楽になるLinuxコンソールでの小技
LinuxでCUIを用いて仕事していると、特定の操作方法を知っているかどうかで効率が結構変わってくる。 キーボードから手を放してマウスを操作すると、それだけでも結構効率が落ちたりするし、いちいちPATHを指定するのも面倒だし。 ここでは、コンソール操作を効率的に行うための小技をいくつか紹介する。...
View ArticleLinuxコンソール上で文字列の回文判定を行う
ふと、コンソール上でワンライナーで文字列の回文判定を行うにはどうすればよいのだろう?と思ったので調べてみた。 以下のようにすることで、回文判定を行うことができる。 perlの場合、アルファベットならもっと短くできるのだけど、日本語も対応させるとちょっと長くなってしまった。 echo "あいうえお" | awk '{ split($1,a,"");...
View Articlechmod/chownでファイルから別のファイルに権限・所有者をコピーする
chmod/chownコマンドでは、「–reference」オプションで特定のファイルを指定してやることで、そのファイルの権限や所有者の情報をそのまま他のファイルにも適用させることができる。 chmod --reference=元ファイル 対象ファイル chown --reference=元ファイル 対象ファイル blacknon@BS-PUB-UBUNTU-01:/tmp$ ls -al...
View ArticleLinux/Macでcommコマンドを使って片方だけ・両方に存在する行を簡単に抽出する
なんとなしにネットサーフィンしていたところ、commコマンドというコマンドがあることを知ったのでどういったコマンドなのか調べてみた。 このコマンド、簡単に説明すると2つのファイルを比較して、片方だけにある行を1or2列目に、両方にある行を3列目に分割して出力してくれる、というコマンドだ。 最初から入っているので、そのまま使える。...
View ArticleLinux/UNIXでファイル・ディレクトリの存在確認をする
LinuxやUNIXでファイル・ディレクトリの存在確認をする場合、「test」コマンドを用いる。 test -f ファイルPATH # ファイルの存在確認 test -d ディレクトリPATH # ディレクトリの存在確認 blacknon@BS-PUB-UBUNTU-01:/tmp$ # ファイルの有無を確認 blacknon@BS-PUB-UBUNTU-01:/tmp$ ls -la...
View Articlesedでダブルクォーテーション・シングルクォーテーションの置換・削除を行う
sedでダブルクォーテーションやシングルクォーテーションの置換・削除を行う場合、条件を囲む記号をどちらでやるかにもよるが、基本的には以下のようにエスケープしてやればよい。 ●「”(ダブルクォーテーション)」で囲んでいる場合 sed "s/\"/置換後の文字列/g" sed "s/'/置換後の文字列/g" blacknon@BS-PUB-UBUNTU-01:/tmp$ echo \"aaaa\" |...
View Article