複数行の取り扱い †
演算子 †
- 文字列連結「演算子」
- 単なる空白
- print "abc" "def" $0
正規表現 †
- マッチした行の xx 行後を表示
- awk '{ if(0 }}' bcpOut.log
- インターバル表現
- echo 'HQ123456' | gawk --posix '$0 ~ /HQ[0-9]{6}/ { print "matched.."}'
リダイレクト †
#!/bin/csh
#
# Change into target directory
#
cd ~/bin
#
# Backup
#
mv sdfeuc sdfeuc.bak
#
# Toggle passwd
#
gawk 'BEGIN { word1 = "hoge"; word2 = toupper(word1) } \
\
{ if( $1 == "ISQL") { \
if( $4 == word1) { old = word1; new = word2; } \
else { old = word2; new = word1; } \
$4 = new; \
\
print "sp_password " old "," new > "sp_password.sql" \
} \
\
{ print $0 > "sdfeuc"} \
\
}' sdfeuc.bak
#
# Change passwd
#
sdfeuc.bak sp_password.sql
#
# Delete backup
#
if ( $status == 0) then
rm sp_password.sql
rm sdfeuc.bak
endif
#
# Change mode
#
chmod uga-wrx sdfeuc
chmod u+wrx sdfeuc
gawk(win) †
- tail
- awk "{ if( NR>100) { exit } else { print $0 } }" hoge.txt
- elseも使える
- ダブルクォーテーションでないとダメのよう
#!/bin/csh
# パイプを使って標準入力からのデータを使用できるが
# fileNameに標準入力からのデータがセットされているわけではなく、
# ファイル名が省略されたと判断されているよう
# (ファイル名が省略されたとき、awkでは、標準入力が使用される)
set fileName = $1
awk '{print $1;}' $fileName
変数 †
- 現レコードの内容全体を $0
- 偶数行だけを表示することもできます。
- ARGC 個数
- ARGV 全体
フィールドの句切り †
- デフォルトは空白とタブ
- ypcat passwd | awk -F: '/username/ {print 4}'
- awk -F\t ... (シングルクォートで囲むとタブとして解釈されない)
- 2文字以上を指定すると正規表現として解釈される
パターン †
awk -F: '$2 == ""' file2
$2 == "" ・・・・・・・ 2番目のフィールドがからである
$2 /^$/ ・・・・・・・ 2番目のフィールドが空文字列と一致する
$2 ! /./ ・・・・・・・ 2番目のフィールドがいかなる文字とも一致しない
length($2) == 0 ・・・・・・・ 2番目のフィールドの長さが0である。
記号 ~ は正規表現との一致を、 !~ は一致しないことを意味しています。
(正規表現は/で囲まれる)
BEGIN と END
BEGIN {printf"LNUM TEXT¥n"}
{printf"%4d : %s¥n",NR,$0}
END {printf"これでおわり¥n"}
範囲
awk 'NR == 1,NR == 10 {print $0}' summer91
は1レコード(行)目から10レコード(行)目までを表示します。
2番目のフィールドがaで始まったら...
awk '$2 ~ /^a/' summer91
awk '$2 !~ /^[a-n]/' summer91
sample †
{ for(i=1;i<NF;i++) {
if($i ~ /[0-9]/ && length($i)>8) {
printf("%s \t %s \n",NF,$i)
}
}
}
#!awk -F'-' -f % b
awk '{print $'$1'}'
#シェルの引数
sp_spaceused †
echo off
REM
REM Check args
REM
if "%1"=="" (echo "Usage: sp_spaceused.bat SDFSDBS010\SQLDFS010 -dSIM -Uguest -Q sp_help " & goto _END)
REM
REM Set connection string
REM
set server=%1
set db=%2
set user=%3
set passwd=%4
set constr=osql -S %1 -d %2 -U %3 -P %4 -w5000
REM echo %constr%
REM
REM Get user table list & create sql string
REM
%constr% -Q "sp_help" | gawk "$1 !~ /^sys/" | gawk "$3 == \"user\"" | gawk "{printf \"exec sp_spaceused \"} {print $1} END { printf \"GO\"} " > tmp.bat
REM
REM Exec sp_spaceused
REM
%constr% -i tmp.bat | gawk "$0 !~ /-------|^$|1>/ {print $3,$1}" | gawk "{if ($0 ~ /name/ ) { header=$0 } else { print $0 }} END { print header }" | sort /R
:_END
*メニュー
最新の20件
2018-04-17
2012-01-07
2011-12-07
2011-11-03
2011-10-20
2011-10-18
2014-07-13
2013-08-10
2012-01-26
2012-01-25
2012-01-24
2012-01-23
2012-01-21
2012-01-20
2012-01-19
2012-01-17
2012-01-14
2012-01-13
2012-01-09
人気の10件
- counter: 3199
- today: 1
- yesterday: 0
- online: 1