改行を無くしたいだけだったのに…

ちょいと思い立って、ブックマークレットを創ろうと思ったわけです。

ブックマークレットは、JavaScript を URLの欄で動かすってーわけですから(多分…)改行なんてあるとまずそう。しかし、開発時には改行がないと見づらくて仕方ない。


というわけで、コード打つときは改行ありで。 動作チェック時には、改行を無くしたいわけです。 こんなもん、コンソールで動作するスクリプト系言語でサクっとできるだろうーなんて思ったわけですが……

sed を使ってみた

sed -r "s/\n//g" file.js
結果

改行されました。orz

頭で s(シングルラインモード)だからアカンのかなー… とか思い、m(マルチラインモード)指定してみたら m が解釈されず orz

linux の echo を使ってみた

linux の echo に 引数オプションとして -n をつけると「改行無し」で echo する事を思い出しまして利用してみました。

#!/bin/sh
for line in `less file.js`
do
  echo -n $line
done
結果
)());(window.location.replace(reg,"$1,$2"));

改行されないのは良いものの、カーソルの位置が「復帰(行の先頭に戻る)」される様で、その結果、後の行が上書きされました。orz

つまり、下記のような状況が発生してます。うわん。

// --- file.js にこんな記述があったとしよう ---
kanaria
manna
12

// -- 上のスクリプトを実行したとしよう --
12nnaia

C# で書いてみた

仕方ないので、コードを打とうと心に決める。

using System;
using System.IO;

class A
{
	public static void Main(String[] args)
	{
		TextReader r = System.Console.In;
		TextWriter w = System.Console.Out;

		string line = r.ReadLine();
		while(line != null)
		{
			w.Write(line);
			line = r.ReadLine();
		}
	}
};

スグできた。orz

とはいえ、tab の処理もしなきゃならん事が発覚しましたけど ^^;

個人的に思うこと

結果できたとは言え、明らかにスクリプト系言語に不慣れな自分が居ると思ってます。 C# となるとコンパイル課程が入るわけで、ちょっとしたテキスト処理なのにちょっと大げさだよなー…なんて正直思ってます。

linuxを本格的に弄りはじめたってのも関係もあるのでしょうが、スクリプト系の言語は何をやるべきなのかと悩む事が最近多いです。php? ruby? python? あたりが候補ですが…… んー、どうするべきか。
# ちなみに、perl は既にやる気有りません。(ぉ



前にNEな知人に何がオススメかと聞いたら「awk」なんて言われた事がありますが、これはネタだったのか、マジだったのか……