- - PR -
シェルの文字列操作
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2006-05-02 13:10
お世話になります。
LINUX上のテキストファイルを読み込み、文字列操作をしたいと思います。 ファイルの内容 secAuthority=Default,cn=testusr001,ou=users,o=aaa,c=jp secAuthority=Default,cn=testusr002,ou=users,o=aaa,c=jp secAuthority=Default,cn=testusr003,ou=users,o=aaa,c=jp 上記を testusr001 testusr002 testusr003 のファイルにしたいと思っています。 そこで、以下の通りシェルを作成したのですが 例えば、"testuser 004"のように、スペースがはいっているとうまくいきません・・・ ご教示をお願いします。 for user in `cat ${LDAP_LOG}` do # secAuthority=Default,cn=testusr960,ou=users,o=aaa,c=jp # → # testusr960,ou=users,o=aaa,c=jp user=`echo ${user} | sed -e 's/.*cn=//'` # testusr960,ou=users,o=aaa,c=jp # → # testusr960 user=`echo ${user} | sed -e 's/\,.*//'` echo ${user} >> ${USER_LIST} done |
|
投稿日時: 2006-05-02 13:27
私ならawkで,をデリミタとして2つ目、そこからsedでcn=を消すのを考えましたが
以下の内容ファイル(memo)を用意しました secAuthority=Default,cn=testusr001,ou=users,o=aaa,c=jp secAuthority=Default,cn=testusr002,ou=users,o=aaa,c=jp secAuthority=Default,cn=testusr003,ou=users,o=aaa,c=jp secAuthority=Default,cn=testusr 004,ou=users,o=aaa,c=jp # cat memo | awk -F, '{ print $2 }' | sed 's/cn=//g' testusr001 testusr002 testusr003 testusr 004 |
|
投稿日時: 2006-05-02 13:50
ご回答ありがとうございます。
1行でできるのですね・・・ 勉強になります。 引き続き、質問させていただきますが ファイルの内容 testusr001 testusr002 testusr003 testusr 004 上記を aaa "testusr001" bbb "testusr001" aaa "testusr002" bbb "testusr002" aaa "testusr003" bbb "testusr003" aaa "testusr 004" bbb "testusr 004" のファイルにしたいと思っています。 こちらも一行でできるものなのでしょうか? |
|
投稿日時: 2006-05-02 14:32
こんな感じ
$ cat foo | awk '{print "aaa ¥"" $1 "¥" bbb ¥"" $1 "¥""}' ¥は半角バックスラ |
|
投稿日時: 2006-05-02 15:29
ご回答ありがとうございました。
助かりました。 ちなみになのですが、 可変データとして取り扱う事はできるのでしょうか? DATA1=aaa DATA2=bbb 単純に $ cat foo | awk '{print "$DATA1 ¥"" $1 "¥" $DATA2 ¥"" $1 "¥""}' ではダメでした・・・ |
|
投稿日時: 2006-05-02 15:43
すみません
先ほどのだとスペースを含む文字列がある場合は $1ではなく$0にしないとダメですね。 以下追加 DATA1とかDATA2はシェル変数ですか? それだったら以下みたいにすれば大丈夫なはず $ cat foo | awk '{print "'$DATA1' ¥"" $0 "¥" '$DATA2' ¥"" $0 "¥""}' [ メッセージ編集済み 編集者: koji 編集日時 2006-05-02 16:17 ] |
|
投稿日時: 2006-05-02 16:39
ご回答ありがとうございました。
教えていただきました方法で、動作を確認しました。 助かりました。 ありがとうございました。 |
1
