私は好きなように出力を得ようと懸命に努力しています。
現在の出力:
###Server1###
2
###Server2###
0
###Server3###
5
###Server4###
0
必要な出力:
###Server1###
2
###Server3###
5
私が探しているのは、行の任意の場所に 0 (ゼロ) を含む行と前の行を grep して無視することだけです。私はbashシェルを使用しています。
私は好きなように出力を得ようと懸命に努力しています。
現在の出力:
###Server1###
2
###Server2###
0
###Server3###
5
###Server4###
0
必要な出力:
###Server1###
2
###Server3###
5
私が探しているのは、行の任意の場所に 0 (ゼロ) を含む行と前の行を grep して無視することだけです。私はbashシェルを使用しています。
これは可能なアプローチです:
$ grep -B 1 "^\s*[1-9]$" file
###Server1###
2
--
###Server3###
5
を取り除くにはgroup separator
、次のこともできます。
$ grep --no-group-separator -B 1 "^\s*[1-9]$" file
###Server1###
2
###Server3###
5
を使用grep -v
して逆数を見つけるのではなく、 ではない 1 桁の値を持つ行を探す方が簡単だと思います0
。これは"^\s*[1-9]$"
、数字の前にスペースを許可する式で行われます。
で-B 1
一致した行の前の行も印刷するようにします。
GNU sedのコード:
sed '$!N;/\s*\b0\b\s*/d' file
$ sed '$!N;/\s*\b0\b\s*/d' ファイル ###サーバー1### 2 ###サーバー3### 5