次の2つのコマンドラインセットがあります。
make PREFIX=/usr \
SHAREDIR=/usr/share/hwdata \
SHARED=yes
make PREFIX=/usr \
SHAREDIR=/usr/share/hwdata \
SHARED=yes \
install install-lib
2行目の前に行を挿入したいですmake PREFIX=/usr
。
私が試したことは次のとおりです。
sed -e "/make PREFIX=\/usr/i\ sed -e '/\\\\\$(DIRINSTALL) -m 755 \\\\\$(DESTDIR)\\\\\$(SBINDIR)/ s/^/#/' \\\\\n\ -e '/\\\\\$(DIRINSTALL) -m 755 \\\\\$(DESTDIR)\\\\\$(LIBDIR)/ s/^/#/' \\\\\n\ -e 's/pci \\\\\$(DESTDIR)\\\\\$(PKGCFDIR)/pci/' \\\\\n\ -i Makefile" \
>> $Output
$Output
スクリプトファイルの名前です。
正しいsedコマンド(以下を参照)を生成しますが(一部の\ 'は表示から失われます)、もちろん2つのモードの上に行を配置します。上記のさまざまな改善を試しましたが、成功しませんでした。 2番目のアイテムの上にどのように挿入しますか?申し訳ありません。 Google ではまだ情報を提供していません。私はこれをBashスクリプトで書いているので、sedやawkを適用するのが最も簡単です。私はPerlを理解していないので、それを使用したくありません。
これが私が挿入したい行です。 Bashスクリプトでは、次のように表示する必要があります。
sed -e '/\$(DIRINSTALL) -m 755 \$(DESTDIR)\$(SBINDIR)/ s/^/#/' \
-e '/\$(DIRINSTALL) -m 755 \$(DESTDIR)\$(LIBDIR)/ s/^/#/' \
-e 's/pci \$(DESTDIR)\$(PKGCFDIR)/pci/' \
-i Makefile
ベストアンサー1
これはうまくいきます...最初の発生をスキップします。
sed -i -E '0,/make PREFIX/! s/(make PREFIX)/\n\1/' file.txt
ファイル.txt
make PREFIX=/usr
SHAREDIR=/usr/share/hwdata
SHARED=yes
make PREFIX=/usr
SHAREDIR=/usr/share/hwdata
SHARED=yes
install install-lib