awkで、文字列の最後に特定の文字があったときにそれを削除するというものを作ろうと思います。
最後の文字が何であるかを調べるには、lengthで文字列の長さを調べてから、substrを使えば調べられると思うのですが、その文字を削除する方法がわかりません。文字列のx文字目までを取得する、あるいは、x文字目の文字を置換する(この場合ヌルに)という操作ができれば良いと思うのですが、それらしい文字列関数が無いように思います。どのような操作をするべきなのでしょうか?
環境は、Windows98でgawk32を使っています。

A 回答 (2件)

文字列の最後だけをターゲットにするのであれば、長さなんて知らなくても


正規表現でOKです。

例えば、文字列 s の末尾が英小文字だったら削除する、だったら

if ( s ~ /[a-z]$/ ) {
 sub( /.$/, "", s );
}

という感じ。

ちょっと正規表現が見にくいでしょうか?
sub() の行だけを全角文字で書くと

sub( /.$/, ””, s );

です。
    • good
    • 0
この回答へのお礼

なるほど。正規表現ってはこうやって使うんですね。今まで、検索の時に便利になる程度のものと思っていましたが、なかなか強力な使い方できることがわかりました。ありがとうございます。

お礼日時:2001/08/07 20:23

もっと良い方法があるかもしれませんが(awk最近あまり使ってないので...)


substrを使うのはどうでしょうか?
BEGIN {
str = "abcdef"

print "before:" str
str = substr( str, 0, length( str ) - 1 )
print "after :" str
}
    • good
    • 0
この回答へのお礼

なるほど、substrでもこうやれば可能ですね。substr自体は知っていたのですが、この使い方に思い至りませんでした。有り難うございます。

お礼日時:2001/08/07 20:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q手書きでデザインした文字やロゴをデジタル化するソフト

手書きでデザインした文字や簡単な絵というか、
ロゴマークみたいなのをスキャナに取り込んで、
デジタル化したいのですが、
Illustratorは高くて買えません。
ベクトル画像でレイヤーが使えて使い方が簡単な
ソフトがあれば教えてください。
そんな都合のいいものはないのでしょうか?
無ければ、無いと教えていただきたいのですが・・・
PhotoshopElementsは使っているのですが、
限界を感じています。

Aベストアンサー

PaintShopPro7・Paintgraphic両方とも低価格でパスを扱えます。PaintShopProは最新版は9ですがパスや印刷プレビューの使い勝手が改悪された上動作が重くなっているので安く軽い7を推奨します。

PaintShopPro7・Paintgraphic両方ともElementsにないチャンネル・パス・トーンカーブ・マスクがありますしレイヤーも当然使えます。PaintShopPro7はイラストレーターのようにフォントをアウトライン化してベクターオブジェクトとしていじることができます。

>>手書きでデザインした文字や簡単な絵というか、
ロゴマークみたいなのをスキャナに取り込んで、
デジタル化したいのですが、
>>ベクトル画像でレイヤーが使えて使い方が簡単

はもちろんPaintShopPro7・Paintgraphicのどちらでも可能です。ただしPaintgraphicは価格は安いですが中上級者向きのソフトです。レタッチソフト初心者でなくてもマニュアルつきを購入したほうが無難です。PaintShopPro7はPDFとフラッシュによる動画マニュアルおよび絵入りのヘルプ画付属するので解説書は特に必要ないです。
PSP ver.7と6解説
http://www.seiai.ed.jp/t2000/psp7t2/index.html
http://www.seiai.ed.jp/t2000/psp/index.html

Paintgraphic
http://www.sourcenext.com/products/paint/
http://piro.sakura.ne.jp/latest/flakes/035kid.html
PaintgraphicとPhotoshopLEの比較
http://ojakan2.hp.infoseek.co.jp/cgtips_pg.html
PaintShopPro7
(http://www.amazon.co.jp/exec/obidos/ASIN/B0006IX6Z2/qid%3D1123834561/sr%3D1-1/ref%3Dsr%5F1%5F10%5F1/249-6805767-8787515)

PaintShopPro7・Paintgraphic両方とも低価格でパスを扱えます。PaintShopProは最新版は9ですがパスや印刷プレビューの使い勝手が改悪された上動作が重くなっているので安く軽い7を推奨します。

PaintShopPro7・Paintgraphic両方ともElementsにないチャンネル・パス・トーンカーブ・マスクがありますしレイヤーも当然使えます。PaintShopPro7はイラストレーターのようにフォントをアウトライン化してベクターオブジェクトとしていじることができます。

>>手書きでデザインした文字や簡単な絵というか、
...続きを読む

Qawk と gawk の書き方の違い

PCでAWKコマンドを使いたくてgawkを使ってみたのですが、
やっぱりawkのような書き方では上手く実行できないみたいです。
gawkのバージョンは v3.1.6です。

コマンド (awk) awk -F, '{printf("copy aaa\%s bbb\%sn",$0,$0)}' list.txt

単純にDOSのバッチをファイルから作りたいだけなのですが・・・gawkではどのように書けば良いのか教えてください。お願いします。

仕事でUNIXを使っていたのですがPCに移行するという話がでていて、今までのunixコマンドをPCで動くようにソースを書き直して行かなくてはならないのにパスを『/』から『\』にしただけでは全く動きませんでした。やっぱりUNIXのawkでは出来てPCのgawkでは出来ないこともあるのでしょうか?それとも書き方の問題でしょうか??

Aベストアンサー

>やっぱりawkのような書き方では上手く実行できないみたいです。
エラー箇所と内容を返してくると思いますが具体的にどういう状況でしょうか。

単純に引用符の問題だけのように思えますが↓でどうでしょう。
※一部単純な誤記と思われる部分(\→\\、n→\n)も変更しました。

gawk -F, "{printf(\"copy aaa\\%s bbb\\%s\n\",$0,$0)}" list.txt

Q手書き文字&イラストをデザインに取り込みたい

手書き、もしくはスタンプでの文字(やイラスト)を
イラストレーターやフォトショップに取り込んで、

その後、ソフトでまた加工、レイアウトしたりして

(文字の書いてある紙の色や質感などは残さずに、
文字(結構細かい)だけをとりこんで、
ファイルにレイアウトしたいのです。)

印刷物にしたいのですが、取り込み方の方法が
いまいちわかりません。。

どなたか知っている方、
いらっしゃいましたらよろしくお願い致します。


ちなみにIllustrator9.0、photoshop5.5を使用しています。

Aベストアンサー

流れとしては
1.手書き等の文字をスキャナで大きめに取り込む(フォトショップ)
2.取り込んだ画像を文字の部分とその他の部分がはっきり分かれるようコントラストを強くして保存。必要に応じて消去したり白黒2階調にしたり、抽出したり技術を要します。(フォトショップ)
3.さきほど保存しておいたデータをイラストレータの書類に配置。
オートトレースツールで輪郭をトレース。大きい画像のほうがトレースしたときのあらがでにくいです。うまくいかない場合環境設定のオートトレースのところを調節してください。このツール、非常にアバウトで、うまくいくかどうか疑問ですが・・・^^:
(イラストレーター)
4.貼り付けた画像を削除
こうすれば文字の部分が図形になるはずなので拡大縮小、変形など自由にできます。
なお、3の部分ですが、アドビのストリームラインというソフトをお持ちでしたらそちらで簡単に精密に輪郭をトレースできます。

Qawkで最後の列だけ除外する方法

「awkのみ」で最後の列だけを区切り文字も含めて除外するのに、スマートな方法は無いでしょうか?
x1,x2,x3,…,x98,x99,x100

x1,x2,x3,…,x98,x99
とする方法です。
$ awk {$100="";print $0}
だと最後のカンマが残りますし、かといってprint $1, $2,…$98, $99
はダサいのでやめたいのですが・・・

Aベストアンサー

BEGIN{FS=OFS=","}
{NF--;print}

かな。

Qパソコン上で手書き文字などを保存したいのですが。

パソコン上での手書きについてお聞きします。

マウスで、簡単な文字なり絵を描いて、それを保存したいのです。
できるのでしょうか?

手書き認識ではありません。すなわち、今、IME、ATOK,を
使用しています。このソフトは、マウスで描いた手書き文字を
漢字等に変換してくれます。しかし、この「変換」まではいらないのです。
マウスで描いた手書き文字等をそのまま保存したいのです。

Vista(Home)を使用しています。
標準搭載の「Tablet PC 入力パネル」でできるでしょうか?

何か、いい方法はありますか?

どうかよろしくお願いいたします。

Aベストアンサー

文字や絵を何かの文章で文字同様に利用するわけでなければ画像として残しておくことはできます。No.1の方のお返事通りペイントでもいいですし、売っているソフトでもいいですし、VistaならWindows Journalというソフトが標準で搭載されていると思います。これを用いれば通常のノートと同じように保存しておくことができますよ。

Qawkで可変文字列をマッチング

シェルなどでawkを使う際に、シェルの引数として渡された文字列をawkに渡し、それを条件にマッチングをかけたいのですが、どうしたら良いのでしょうか?(まあ、素直にgrepを使えばいいのですが・・・)

例えば、

cat foo.txt | awk '{if ($2 == ptn) print}' ptn=$<シェルの引数>

とかやれば、2番目のフィールドに完全に一致する行が抽出できるのですが、

cat foo.txt | awk '/ptn/ {print}' ptn=$<シェルの引数>

とかやっても、"ptn"という文字列をマッチングしてしまうので、うまくいきません。どの位置に出現するかわからないけど、シェルの引数で指定された文字列が含まれている行だけを出力したい場合、どうしたらよいのでしょう・・・。

Aベストアンサー

shですか?

シングルクオート ' は中の引数を展開しません。
シェル変数は渡すときに中身で展開してほしいわけですから、ダブルクオート " を使います。
こんな感じ、、

cat foo.txt | awk '/'"$1"'/{print}'
ここで、$1 は sh でのシェルスクリプトに渡される一番目の引数です。

では。

Q手書き文字入りの画像の作り方???

今日和<(_ _*)>

手書きの文字が入った待受画像を集めている
んですが、あれって どうやって作ってるんですか??

PictBear等、画像加工ソフトを使っていて、
手書き文字のフォントならDLしてあるし、
手書き風の文字で文字入れ出来る携帯サイトの文字
とも違うんですよね。。。

マウスで頑張ってみても上手く書けなくて、
細かい文字なんてムリ… ~(-゛-;)~

PCですか?
携帯だけで出来るのでしょうか??
スキャナで読み込んでるのでしょうか??
それとも、ペンタブが無くちゃ出来ませんか??

職人さんの中には作成方法までは答えない、って
人が多くて聞けずに ずっと気になってるんですが
職人さん達は どうやって手書きしているのか
教えて下さい(>_<)
お願いします☆

Aベストアンサー

やろうと思えば携帯で出来ます。

私はDoCoMo FOMA F900iTユーザーなのですが、此れにはタッチパネル機能があって、手書きできるんです。
絶対にやりたいなら買ってもいいと思いますが、発売からもう一年経っていて、しかも未だに高い。\20000overです。

Qawkを使って文字列処理の問題

awkで以下のことをやりたいですが、
a.txtの中身は
aaaa
bbbb
cccc
の三つのレコードがあります。
b.txtの中身は
東京a
埼玉b
千葉c
東京d
になってます。
ファイルa.txtのみっつのレコードのを読み込んできて、b.txtに対して検索して、東京
という文字列があれば、そのレコードは、aaaaに置き換えて、あるファイルに出力する
ようなスクリプトを書きたいです。
どう書けば、いいですか?教えていただけませんか?

Aベストアンサー

b.txtの「東京」を「aaaa」に変えるなら、
awk '{gsub("東京","aaaa");print}' b.txt
ですが、それとa.txtはどういう関係があるのですか?

Q手書きの文字入力はどうするの?

ペイント文字の入力方法はわかりました。
手書きの文字を入力したい場合ははどうするんでしょ?

Aベストアンサー

> 手書きの文字を入力したい場合ははどうするんでしょ?

下記URLのページのような「手書き(風)文字」フォントを使って入力します。

「漢字も使える手書き風の日本語フォントのまとめ」
http://coliss.com/articles/freebies/freebies-handwriting-japanese-font.html

「フリーで使えるいい感じの手書き風フォント特集(日本語も)」
http://e0166.blog89.fc2.com/blog-entry-526.html

「手書き和文フリーフォント」
http://pet.24-7smile.com/font/cursive.html

Q文字列の一部を取り除きたい(awk?)

こんにちわ。

下記の文字列操作を行いたいのですが上手くいきません。
どなたか教えて下さい。
環境OSはsolarisです。
awkにはこだわりません。

・最初の2文字を取り除く
・最後の文字が"2"の場合取り除く


yoroshikune → roshikune
onegai2 → egai

Aベストアンサー

どうせなら、両方ともsedで、

sed -e 's/^..//' -e 's/2$//'

awkだと、
awk '{X=substr($0,3);sub(/2$/,"",X);print X}'


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング