2016-10-19 9 views
-1


シェルスクリプトでは、次のような問題があります。文字列。文字列内の特定の文字の出現箇所を見つけて表示する(シェル/ AIX)

解決策はいくつか見つかりましたが、問題はLinuxシェルではなくAIXシェルで動作することです。

例:
文字列は次のようなものになります。
someString-10.12.16.somestring.sql
(はい、それはファイル名です)

私はgrepのでそれを試してみました:AIXの下 echo $string | grep -aob '\.' | sed -n '2p' | cut -c 1-2)
が、grepがサポートしていませんがオプション-ob

私はsedで試しました:sed 's/\([^\.]*\..*\)\..*/\1/' | wc -c
しかし、私はエラーメッセージが表示されます:sed: Function s/\([^\.]*\..*\)\..*/\1/ cannot be parsed

誰でも私にAIXシェルで実行されるソリューションを提供できますか? 各ドットについて、そのドットの位置を返す1つのコマンド。

ありがとう:-)

+1

期待どおりの結果が得られましたか?あなたが投稿した例は、2番目の発生を返します。すべての出来事のリストが必要ですか?私はあなたが「各ドットについて、そのドットの位置を返すコマンドを1つ」とは何を意味するのか分かりません。 –

+0

いいえ、私は発生のリストは必要ありません。私は特定のドット/ピリオドの番号としての位置を私に与えるコマンドが必要です。 解決策が見つかりました: 'echo" someString.0.4.text "| tr。 '\ n' | sed -n '2p' | wc -c' しかし、wc -cコマンドは戻り値の前にスペースをいくつか表示しますが、それはなぜですか? 私はそれらを切り取り、後で私の完全な解決策を印刷します。 – churks

答えて

0

あなたはこれらを試すことができます。リターンへ

最初のドットの位置(インデックス付けが1でない0で始まる。)

echo `expr match "someString-10.12.16.somestring.sql " '[a-z:A-Z:0-9:-]*.'` 

第2のドット。

echo `expr match "someString-10.12.16.somestring.sql " '[a-z:A-Z:0-9:-]*.[a-z:A-Z:0-9:-]*.'` 

第3ドット;

echo `expr match "someString-10.12.16.somestring.sql" '[a-z:A-Z:0-9:-]*.[a-z:A-Z:0-9:-]*.[a-z:A-Z:0-9:-]*.[a-z:A-Z:0-9:-]*.'` 

最後のドット;

echo `expr match "someString-10.12.16.somestring.sql" '[a-z:A-Z:0-9:-]*.[a-z:A-Z:0-9:-]*.[a-z:A-Z:0-9:-]*.[a-z:A-Z:0-9:-]*.'` 

例:

[email protected]:>echo `expr match "someString-10.12.16.somestring.sql" '[a-z:A-Z:0-9:-]*.'` && 
> echo `expr match "someString-10.12.16.somestring.sql" '[a-z:A-Z:0-9:-]*.[a-z:A-Z:0-9:-]*.'` && 
> echo `expr match "someString-10.12.16.somestring.sql" '[a-z:A-Z:0-9:-]*.[a-z:A-Z:0-9:-]*.[a-z:A-Z:0-9:-]*.'` && 
> echo `expr match "someString-10.12.16.somestring.sql" '[a-z:A-Z:0-9:-]*.[a-z:A-Z:0-9:-]*.[a-z:A-Z:0-9:-]*.[a-z:A-Z:0-9:-]*.'` 

14 
17 
20 
31 


[email protected]:>echo `expr match "123.567.90." '[0-9]*.'` 
4 
[email protected]:>echo `expr match "123.567.90." '[0-9]*.[0-9]*.'` 
8 
[email protected]:>echo `expr match "123.567.90." '[0-9]*.[0-9]*.[0-9]*.'` 
11 
関連する問題