行末文字のみを含むUnixの特定の行を削除する方法
ファイルの内容は次のとおりです。
H XXXXXXXXXXXXXXXXXX ""$SEQ_NO $
$
D^I001000456108^IU$
しなければならない、
H XXXXXXXXXXXXXXXXXX ""$SEQ_NO $
D^I001000456108^IU$
答え1
次の操作を実行できます。
sed '/^\$*$/d' filename
サンプル
$ cat filename
H XXXXXXXXXXXXXXXXXX ""$SEQ_NO $
$
D^I001000456108^IU$
$ sed '/^\$*$/d' filename
H XXXXXXXXXXXXXXXXXX ""$SEQ_NO $
D^I001000456108^IU$
答え2
sed(1)
以下を使用して、CRのみを含むすべての行を削除できます。
cat your_file.txt | sed -e '/^$/d'
答え3
grep -vx '\s*\$\s*' file.txt
-x
行全体と正確に一致する一致のみを選択-v
一致の意味を変更し、一致しない行を選択します。\s*
ゼロ個以上の空白文字\$
$
文字マッチ
関連行に先行スペースと末尾スペースがないことがわかっている場合:
grep -vx '\$' file.txt
答え4
それはただ:
grep . < file.in > file.out
grep .
1つ以上の文字を含む行を見つけます。これは、空行または有効な単一文字を形成しないバイト列を含む行を除くすべての行です。
そして:
LC_ALL=C grep .
各バイトシーケンスが有効な文字を形成していることを確認して、無効なテキスト行(存在する場合)を保存します。または、次のものを使用できます。
grep -vx ''
別のオプションは次のとおりです。
awk length < file.in > file.out
同様に、文字以外の文字のみを含む行に対してゼロを返すことができる実装を見つけることができますawk
。length
$
1 つの文字のみを含む行 (後に改行文字) を削除するには、次のようにします。
grep -vxF '$' < file.in > file.out