次の行を含むファイルがあります:
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
「SUKsoft:」という行を削除するにはどうすればよいですか?
この行は、ファイル内の任意の場所(現在のように先頭でも、途中でも)に存在する可能性があります。
これを行うコマンドはありますか?
答え1
に取り除くラインの使用
sed -i '/SUKsoft:\s*$/d' your_file
例
% cat foo
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
% sed -i '/SUKsoft:\s*$/d' foo
% cat foo
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
答え2
目的の行を削除する手順は次のとおりです。
$ sed 's/SUKsoft: *$//' file.txt
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
file.txt
行が含まれていると想定しています。
または、
$ sed 's/SUKsoft: *$//; /^$/d' file.txt
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
それは何も残さない空白ライン。
ファイルを編集するには、
sed -i 's/SUKsoft: *$//' file.txt
または
sed -i 's/SUKsoft: *$//; /^$/d' file.txt
必要に応じて。
答え3
grep
パターンを満たす行を検索します。 grep -v
破棄するパターンを満たす線。
grep -v '^SUKsoft: *$'
パターンは次のようになります:^
で始まる行 ( ) SUKsoft:
。その後にスペースが続く場合もありますが、行末 ( $
) まで他には何もありません。
答え4
あなたの生のソースを投稿する「SUKsoft:」の後にはスペースやスペースの連続はありませんが、安全のために、このコマンドは、存在する場合はそれらを処理します。
Perl の使用:
perl -ne '!/^SUKsoft: *$/&&print' input
!/^SUKsoft:$/&&print
^SUKsoft: *$
: 現在の行が、文字列で始まりSUKsoft:
、その後に 0 個以上のスペースが続く行に一致するパターンに一致しない場合は、その行を出力します。
% cat input
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
% perl -ne 'print unless /^SUKsoft: *$/' input
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW