おぼえがき
おぼえがき
sed 読み込んだファイルの内容を置換する
テンプレートにスタイルシートの宣言がXXXXXXって入ってて、
それを削除した上に、3行変わりにYYYYって言うファイルの中に
入っているスタイルシートの行を追加したい。
for i in $(ls -1 該当テンプレートファイル);
do
sed -i '/XXXXXX/ { #XXXXXX にマッチしている行を抽出
r YYYYY #YYYYYからファイルを読み込む
/.*XXXXXX.*$/d #XXXXXXの行は、削除
}' $i;
done
できる。
ちょっと感動。
それを削除した上に、3行変わりにYYYYって言うファイルの中に
入っているスタイルシートの行を追加したい。
for i in $(ls -1 該当テンプレートファイル);
do
sed -i '/XXXXXX/ { #XXXXXX にマッチしている行を抽出
r YYYYY #YYYYYからファイルを読み込む
/.*XXXXXX.*$/d #XXXXXXの行は、削除
}' $i;
done
できる。
ちょっと感動。
コメント ( 0 )
awk システム変数を理解(FS OFS RS ORS NF NR FILENAME)
awk 'BEGIN {FS="n"; RS="ORS="-"} {print $1,$NF}' aaaa
ファイルの中身
-----------------
1
2
3
4
5
6
7
8
9
-----------------
以下のスクリプトの実行
ファイルの1から3 4から6 7から8をひとつのデータとして考える
awk '
BEGIN {
FS="n"; # カラムの区切りを改行に
RS=""; # レコードの区切りを空白に(ファイルの3と4の間)
OFS="*"; # 出力のデミリタ(カンマがあればOFSに変わる $1,$NFの部分)
ORS="nn" # 出力のデミリタ(改行二つが1回ごとの実行のデミリタとなる)
}
{
print NR"." $1,$NF # NR:現在の行 / NF:1レコードの最大カラムの位置
}
END {
print FILENAME # FILENAME : ファイル名の出力
}' ファイル名
-----------------
結果
1.1*3
2.4*6
3.7*9
ファイル名
-----------------
ファイルの中身
-----------------
1
2
3
4
5
6
7
8
9
-----------------
以下のスクリプトの実行
ファイルの1から3 4から6 7から8をひとつのデータとして考える
awk '
BEGIN {
FS="n"; # カラムの区切りを改行に
RS=""; # レコードの区切りを空白に(ファイルの3と4の間)
OFS="*"; # 出力のデミリタ(カンマがあればOFSに変わる $1,$NFの部分)
ORS="nn" # 出力のデミリタ(改行二つが1回ごとの実行のデミリタとなる)
}
{
print NR"." $1,$NF # NR:現在の行 / NF:1レコードの最大カラムの位置
}
END {
print FILENAME # FILENAME : ファイル名の出力
}' ファイル名
-----------------
結果
1.1*3
2.4*6
3.7*9
ファイル名
-----------------
コメント ( 0 )
awk NF を使う
awk -F " " -v 'OFS=_' '{print NF,$NF}' ファイル
NFは、最終行を示す
$NRはつまり、最終行の中身を取得するという意味。
最終行が、一定でない場合に有効になるね。
NFは、最終行を示す
$NRはつまり、最終行の中身を取得するという意味。
最終行が、一定でない場合に有効になるね。
コメント ( 0 )
awk match関数を使わんでも・・・
awk 'BEGIN{FS="[:|_]"} $2 ~ /Error/ {print $3}' ${ファイル名}
match関数を使わんでも。
$2 ~ /Error/
といった、マッチができる。
ちなみに、これの否定版は
$2 !~ /Error/
でできる。
あと、
デミリタに
awk -F ":" ....
ってやってたけど、
FS="正規表現" がかける。
便利。
match関数を使わんでも。
$2 ~ /Error/
といった、マッチができる。
ちなみに、これの否定版は
$2 !~ /Error/
でできる。
あと、
デミリタに
awk -F ":" ....
ってやってたけど、
FS="正規表現" がかける。
便利。
コメント ( 0 )
« 前ページ | 次ページ » |