cygwinをインストールすれば、commandline-tools の機能を使用できます。
$ sed 's/[-)(]//g' input
33344444 anything anything2
44444444 anything anything2
47444544 anything anything2
48444444 anything anything2
84444444 anything anything2
44644442 anything anything2
アップデート
複雑なタスクをより小さな部分に分割する方が簡単な場合があります。
入力が次のようになっていると仮定します (定規を追加)
1 2 3 4 5
12345678901234567890123456789012345678901234567890
3334-444-(4) anything anything2
4444-444-(4) anything anything2
4744-454-(4) anything anything2
48444 44-(4) anything anything2
8444-444-(4) anything anything2
4464-(444)-2 anything anything2
ステップ 1ではcut
、最初の 17 文字を切り取り、不要な文字を削除して tmp ファイルに保存します。
ステップ 2は、文字 18 を行末まで切り取り、tmp ファイルに保存することです。
ステップ 3は、tmp ファイルを 1 つのファイルに結合することです。
このようなもの:
$ cut -c1-17 input | sed 's/[-)( ]*//g' > c1
$ cut -c18- input > c2
$ paste c1 c2
これがあなたの美的感覚に合わない場合は、 を使用してすべてを一度に行うことができますawk
。次の行を「col.awk」というファイルに入れるか、気に入った場合はより良い名前を選択してください。
{
x = substr($0, 0, 17)
y = substr($0, 18, length($0))
gsub(/[-)( ]*/, "", x)
}
{ printf "%-18s%s\n", x, y }
次に、次のように呼び出します。
$ awk -f col.awk input
出力(再び定規を使用):
1 2 3 4 5
12345678901234567890123456789012345678901234567890
33344444 anything anything2
44444444 anything anything2
47444544 anything anything2
48444444 anything anything2
84444444 anything anything2
44644442 anything anything2
cygwin はすべての行末を UNIX スタイルにすることを好むため、入力を Windows スタイルから UNIX スタイルに変換する必要がある場合があることに注意してください。ここで役立つツールの 1 つはdos2unix
or fromdos
(ここでは Google があなたの友達です) です。