ファイルをループして特定の行を削除したい。サンプルファイル:
test.txt
a
b
c
d
私が持っているもの:
FILE=/tmp/test.txt
while read FILE
do
# if the line starts with b delete it otherwise leave it there
?
done
sed
これは- UNIX ストリーム エディタの仕事です:
(sed '/^b/d' yourfile > yourfile~ && mv yourfile~ yourfile) || rm yourfile~
このコマンドは、a で始まるすべての行を削除しb
、残りの行をバックアップ ファイルに書き込みます。これが成功すると、バックアップ ファイルの名前が元のファイルに変更されます。失敗すると、バックアップ ファイルは削除されます。
あなたはgrep onelinerでそれを行うことができます:
grep -v "^b" test.txt > newfile
bash の組み込み機能を使用して簡単に実行できます。
while read -r; do
[[ $REPLY = b* ]] || printf '%s\n' "$REPLY"
done <file >file.new
mv file.new file
"Perl ... それはあなたの$PATH
" :-)にあるかもしれません
BSD 、OSX、Linux、AIX、Solarisでの小さなテキストタスク($SHELL
つまりsh
、そして、多くのサーバー システム上の古いバージョンのツールは... 難しい場合があります。ksh
zsh
bash
tcsh
csh
sed
grep
gawk
awk
perl -i.orig -ne 'print unless /^b/' test.txt
うまくいきましたか?
diff test.txt test.txt.orig