
検索した文字列がその行にある唯一の場合にのみ、sedなどを使用して行を削除するにはどうすればよいですか?
出力例:
device-address-binding: ?
database-revision: 20
-- Found 198 Objects
},
{
object-identifier: (Analog Input, 1)
object-type: ({ Analog Input },)
object-name: "CA-1 T EXT"
descrip
「}」を含む行を削除する必要がありますが、他に何もない行のみを削除する必要があります。 sedを使用して "}"を含む行を一致させて削除すると、出力内の "object-type"行の上の行も削除されます。
「}、/ n」を検索することをお勧めしますが、sedが機能する方法ではないことを私たちは皆知っています。
ご協力ありがとうございます。
答え1
不要sed
:
grep -vx }, file
または空白を許可します。
grep -vx '[[:blank:]]*},[[:blank:]]*' file
答え2
sed
行末の場合$
:
sed '/^},$/ d'
^
行の始まりを示します。周囲に少し空白がある場合は許可する必要があります},
。
sed '/^[[:space:]]*},[[:space:]]*$/ d'
答え3
sed '/^[[:blank:]]*},[[:blank:]]*$/d' file
答え4
さまざまな方法でこれを実行できますperl
。回避策は次のとおりです。
$ perl -ple 's#^\s*},\s*##' file
device-address-binding: ?
database-revision: 20
-- Found 198 Objects
{
object-identifier: (Analog Input, 1)
object-type: ({ Analog Input },)
object-name: "CA-1 T EXT"
descrip