「テキスト処理」の版間の差分
提供: Wikinote
細 (→ランダムに 1 行出力) |
(→一行野郎) |
||
行37: | 行37: | ||
=== 大文字・小文字変換 === | === 大文字・小文字変換 === | ||
小文字をすべて大文字に変換する。下記はどちらも同じ結果を得る。 | 小文字をすべて大文字に変換する。下記はどちらも同じ結果を得る。 | ||
− | $ | + | $ tr 'a-z' 'A-Z' < FILE |
$ awk '{ print toupper($0) }' FILE | $ awk '{ print toupper($0) }' FILE | ||
行43: | 行43: | ||
<code>0 <= rand() < 1</code> であることに注意。 | <code>0 <= rand() < 1</code> であることに注意。 | ||
$ awk '{l[NR]=$0} END{srand();print l[int((rand()*NR))+1]}' FILE | $ awk '{l[NR]=$0} END{srand();print l[int((rand()*NR))+1]}' FILE | ||
+ | |||
+ | === 区切り文字を変換 === | ||
+ | たぶん tr が一番簡単。 | ||
+ | $ tr -s ' ' ',' < FILE |
2009年6月17日 (水) 01:03時点における版
以下のページも参照のこと。
目次
一行野郎
最長行の長さを求める
AWK のマニュアルにも載っている、基礎的な一行。
$ awk '{ if (max > length()) max = length() } END { print max }' FILE
テキストファイルを横に連結
これは paste コマンドを知っているかどうか。
$ paste FILE1 FILE2
頻出コマンド Top 10
ぜんぜん役には立たないが、パイプの真骨頂が味わえる、趣き深い一行。
$ history | awk '{ print $2 }' | sort | uniq -c | sort -nr | head -n 10
IP アドレス的なもの抽出
面倒なので、先頭の 0 も許す。
$ egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}' FILE
URL 的なもの抽出
使える記号は適当に。
$ egrep -o '[a-z]+://[[:alnum:]:;/._!?~%#&=+-]+'
文字単位で逆順に出力
行単位で逆順に出力する場合は、cat の反対である
$ tac FILE
でよいが、これじゃあ生ぬるい (何が)。文字単位で逆転させようじゃないか。
$ tac -rs '[^@]' FILE
@ はファイル中に出現していない文字に置き換えること。 要するに、ファイル中のすべての文字を区切り文字として逆転させている。
大文字・小文字変換
小文字をすべて大文字に変換する。下記はどちらも同じ結果を得る。
$ tr 'a-z' 'A-Z' < FILE $ awk '{ print toupper($0) }' FILE
ランダムに 1 行出力
0 <= rand() < 1
であることに注意。
$ awk '{l[NR]=$0} END{srand();print l[int((rand()*NR))+1]}' FILE
区切り文字を変換
たぶん tr が一番簡単。
$ tr -s ' ' ',' < FILE