2015年1月15日木曜日

[awk]正規表現

match() を使うことで正規表現を使用できる。 test04.awk
BEGIN {
}

# 先頭が数字の行だけを表示する
{
 # if ($1 ~ /^[0-9]/) {
 # これを使うと buffer: と表示される
 if (match($1, /^[0-9]/)) {
  print $0
 }
}

END {

}
test.csv
This is test.

1,dog,10,20
2,cat,500,200
3,dog,40,20
4,cat,10,500
実行結果
> awk -f test04.awk test.csv
1,dog,10,20
2,cat,500,200
3,dog,40,20
4,cat,10,500
match() ではなく ($1 ~ /^[0-9]) を使った場合、buffer と表示される。
> awk -f test04.awk test.csv
buffer: T
buffer: 1
1,dog,10,20
buffer: 2
2,cat,500,200
buffer: 3
3,dog,40,20
buffer: 4
4,cat,10,500

2014年12月14日日曜日

[mp3] ffmpeg, lame の windows binary

ffmpeg
Zeranoe FFmpeg

lame
RareWares
→MP3→LAME Bundles

[mp3] フォルダ内にある mp3 ファイルのCBR 48 kbps, Sampling rate 44.1 KHz, Monaural に一括変換

フォルダ内にある mp3 ファイルのCBR 48 kbps, Sampling rate 44.1 KHz, Monaural に一括変換する bat ファイル
for %%a in (*.mp3) do (
 rem mp3 ファイルを CBR 48 kbps, 44.1 KHz, mono に変更する
 rename "%%a" "back_%%a"
 lame.exe -b 48 -a --resample 44.1 "back_%%a" "%%a"
)

[mp3] flv ファイルから音声を抜き出して mp3 に変換する

  1. flv ファイルから音声を抜き出し wav に書き出す
    ffmpeg.exe -i .\test.flv test.wav
    
  2. wav ファイルを mp3 に変換する
    lame.exe test.wav test.mp3
    
mp3 変換時に CBR (constant bitrate, 固定ビットレート) 48 kbps, Sampling rate (サンプリング周波数) を 44.1 KHz, Stereo からモノラル (Monaural) にする。
lame.exe -b 48 -a --resample 44.1 test.wav test.mp3
フォルダ内にある flv ファイルを mp3 に変換する bat ファイル
for %%a in (*.flv) do (
 rem flv ファイルから音声を抜き出して wav ファイルに書き出す
 ffmpeg.exe -i "%%a" temp.wav
 rem wav ファイルを CBR 48 kbps, 44.1 KHz, mono にして mp3 に書き出す
 rem %%~na はファイル名部分のみ切り出している
 lame.exe -b 48 -a --resample 44.1 temp.wav "%%~na.mp3"
 del temp.wav
)

2014年12月9日火曜日

[awk]BEGINブロック, ENDブロック

BEGIN ブロック
初期化用のコードを定義する
END ブロック
入力ファイルのすべての行の処理が終了した後に実行される。一般的には最終的な計算や、出力ストリームの最後に合計を出力するために使用される。
入力ファイルの各行にある 1 つめの要素を表示する。
test02.awk
BEGIN {

}
{
 print $1
}
END {

}
a.txt
500 1000 1000
500 1001 1001
500 1002 1002
550 1500 1500
550 1500 1500
645 1800 1800
720 2000 2000
実行結果
> awk -f test02.awk a.txt
500
500
500
550
550
645
720
入力ファイルがコロン ":" で区切られている場合。
d.txt
500:1000:1000
500:1001:1001
500:1002:1002
550:1500:1500
550:1500:1500
645:1800:1800
720:2000:2000
実行結果
> awk -f .\test02.awk .\d.txt
500:1000:1000
500:1001:1001
500:1002:1002
550:1500:1500
550:1500:1500
645:1800:1800
720:2000:2000
BEGIN ブロックで FS (Field Separator) を使って区切り文字を指定する。
test03.awk
BEGIN {
 FS=":"
}
{
 print $1
}
END {

}
実行結果
> awk -f .\test03.awk .\d.txt
500
500
500
550
550
645
720

[awk]スクリプトを指定

-f で awk スクリプトを指定する。 test01.awk に記載されたスクリプトに a.txt を入力し、結果を a_new.txt に出力する。
awk -f test01.awk a.txt > a_new.txt

[awk]基本文法

printコマンドがa.txtの各行に対し順次実行される。
awk "{ print }" a.txt
a.txt
1 Hello
2 Good morning
3 Good night
実行結果
> awk "{ print }" a.txt
1 Hello
2 Good morning
3 Good night