1

現在、ファイル a.txt には次のものが含まれています。

#define ABC

a.txt を次のように変更したい:

#define ABC
#define DEF

そして、私は試しました

sed 's/#define ABC/#define ABC&\n#define DEF/g' a.txt > tmp/test.txt
mv tmp/test.txt > a.txt

しかし、それは代わりに私を与えてい#define ABC#define ABCn#define EDFます。オンラインで複数のソリューションを試しましたが、うまくいきません。私のソリューションの何が問題になっていますか? ありがとう!!!

Solaris 11 での作業

4

5 に答える 5

3

次のようなものを試してください:

$ echo '#define ABC' | sed '/ABC$/ a\
> #define DEF'
#define ABC
#define DEF

注: Oracle Solaris 10 9/10 s10s_u9wos_14a SPARC でテスト済み

于 2013-07-02T22:45:38.877 に答える
2

あなたの「&」だけが問題でした。

これを試して

sed 's/#define ABC/#define ABC \n#define DEF/g' a.txt

#define ABC
#define DEF

UNIXボックスでテストしましたが、正常に動作しています

したがって、最終的な解決策は次のようになります

sed 's/#define ABC/#define ABC \n#define DEF/g' a.txt
a.txt > tmp/test.txt
mv tmp/test.txt > a.txt
于 2013-07-03T07:08:02.053 に答える
2

GNU のコード:


$echo #define ABC|sed 's/.*/&\n#define DEF/'
#定義 ABC
#DEF定義
于 2013-07-02T21:52:51.557 に答える
1

引用されたリンクの2番目の例はあなたのための解決策です

< a.txt sed "/ABC$/a \\
#define DEF
"

a.txt から生成されます

#define ABC

出力

#define ABC
#define DEF

または、上記のリンクの 5 番目の例

< a.txt sed "/ABC$/s/$/\\
#define DEF/"

だから、読んでください!

于 2013-07-02T21:50:43.967 に答える