1
猫はFile1私はパターンMNOザ・ファイル
MNO ABC
MNO ABC
ABC
vzcbjzcb
最終的なファイルが
MNO ABC
MNO ABC
zcvshskl
を持つ必要がありますが含まれていないABCは、シェルスクリプトコマンドで
猫はFile1私はパターンMNOザ・ファイル
MNO ABC
MNO ABC
ABC
vzcbjzcb
最終的なファイルが
MNO ABC
MNO ABC
zcvshskl
を持つ必要がありますが含まれていないABCは、シェルスクリプトコマンドで
私はPerlと次のように行きます:
perl -nle 's/ABC//g if !m/MNO/; print if length($_)' File1
これは... "File1
のすべての行を自動的に処理する(-nle
)。行がMNO
と一致しない場合は、ABC
を何も置き換えない(置き換える)。それが空でない場合は行を印刷します。」
注これは、入力ファイル内の空行を保持しませんが、私はそれは問題ではありません信頼していること。
あなたはawkのでずっと同じことを行うことができます:
awk '!/MNO/{gsub(/ABC/,"")} length($0)' File1
それともとをセッド:
sed -e '/MNO/!s/ABC//g' -e '/^\s*$/d' File1
あなたは本当に、本当にbashのでそれをしたい場合:
#!/bin/bash
while read line; do
[[ ! $line =~ MNO ]] && line=${line/ABC/}
[ ${#line} -gt 0 ] && echo $line
done < File1
が、それはシェル、私はバッシュを使用していますパール....(シェルスクリプト) – Shetty
を使用していないことはできますが、なぜで可能ですあなたは?それは厄介で遅いです.Unixのポイントは、特定のことをうまくやり遂げる小さなプログラムを作成し、それらを連鎖させてより難しいことを達成することです。 'awk'、' sed'、 'Perl'はすべてこの種のものに優れています。 –
私はこのコマンドをsed '/ MNO/s/ABC //' File1しかし、これは同じ行にパターンMNOを含むパターンABCを削除します、このコマンドを否定することは可能ですか? – Shetty