1行のsedコマンドを使用して行末に置き換えて追加します。

1行のsedコマンドを使用して行末に置き換えて追加します。

次の行があります

 // Testing this

sedコマンドを使用して、各行の//を/ *(中間の文または単語)* /に置き換えようとします。

だから、次のようにする必要があります

/* Testing this */

最初の部分は呼びやすいです。

sed 's#//#/*#'

しかし、2番目の部分ではこのソリューションを試しました。

sed を使用して行末に単語を追加する

この機能を使用しようとすると、-e「終了していないコマンド」エラーが発生しました。その後、セミコロンを使用して1つにしようとしました。

's#//#/*#;#//#s#/$#*/#'

//ただし、これは最初の部分(aで置き換え/*)のみが行われ、2番目の部分(aを*/同じ行の末尾に配置)ではないようです。

私は何が間違っていましたか?どんなアドバイスも本当にありがとうございます。

ベストアンサー1

どうですか?

$ cat testfile
// Testing this
foobar
$ sed 'sx//\(.*\)x/*\1 */x' testfile
/* Testing this */
foobar
$
  • sx//: 以下を含む行の検索//
  • \(.*\)x: 行の残りの部分をキャプチャグループ 1 に入れます。
  • /*\1 */x:行の残りの部分を/*(コメントの始まり、Cスタイル)に置き換え、キャプチャグループ1の内容(で参照\1)、それから*/(コメントの終わり、Cスタイル)に置き換えます。

おすすめ記事