0

私はテキストを操作するためにsedで遊んでいました。入力は次のようなものです。

가가라  a b a e
블랙  c dd we df
사무소    as le we

出力が次のようになるように、いくつかのフォーマットを追加する必要があります。

id { id: "가가라" } value { val: "a b a e"} word { word: "가가라"}
id { id: "블랙" } value { val: "c dd we df"} word { word: "블랙"}
id { id: "사무소" } value { val: "as le we"} word { word: "사무소"}

問題は、刺し傷の前後に文字列を追加する方法を知っていることです。

文字列の先頭に文字列を追加します。

sed 's/^/id \{ id: \"/'

文字列の最後に文字列を追加します。

sed 's/$/\"\} word \{ word: \"/'

ただし、各行の最後に文字가가라を追加しようとすると、このコマンドは機能しませんでした。

sed -r 's/(id\s\{\sid:\s\")([^a-z]*)[\sa-z]{1,10}(\"\}\sword\s\{\sword:\s\")/\1\2\3\2/'

また、文字列レアと文字列の間に文字列を追加する方法がわかりません。正規表現を使ってみましたが、うまくいかなかったようです。

4

1 に答える 1

1

あなたの sed 行から、一致するパターンと置換で混乱しているようです。

このsed行を試してください:

sed -r 's/(\S+)\s*(.*)/id { id: "\1" } value { val: "\2"} word { word: "\1"}/' file

あなたのデータでテストしてください:

kent$  echo "가가라  a b a e
블랙  c dd we df
사무소    as le we"|sed -r 's/(\S+)\s*(.*)/id { id: "\1" } value { val: "\2"} word { word: "\1"}/'                             
id { id: "가가라" } value { val: "a b a e"} word { word: "가가라"}
id { id: "블랙" } value { val: "c dd we df"} word { word: "블랙"}
id { id: "사무소" } value { val: "as le we"} word { word: "사무소"}
于 2013-03-20T12:42:59.837 に答える