从文件中删除仅包含特定字符的行

从文件中删除仅包含特定字符的行

如何删除 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 .查找至少包含一个字符的行。这就是除了空行或包含不形成任何单个有效字符的字节序列的行之外的所有行。

和:

LC_ALL=C grep .

我们将确保每个字节序列形成有效的字符,因此它将保留那些无效的文本行(如果有)。或者你可以使用:

grep -vx ''

另一种选择是:

awk length < file.in > file.out

同样,您可能会发现对于仅包含非字符的行可能返回 0 的awk实现。length

如果要删除仅包含一个$字符(后跟换行符)的行,则:

grep -vxF '$' < file.in > file.out

相关内容