在文本文件中查找和删除包含多个单词的行

时间:2014-10-09 08:54:14

标签: linux bash find

如果文本文件包含多个单词,如何使用bash脚本删除行?

3 个答案:

答案 0 :(得分:0)

也许是这样的:

#!/bin/bash

exec 3>output

while read -r line; do
  nwords=`echo $line | wc -w`;
  if [ ! "$nwords" -gt 1 ]; then
      echo "$line" >&3;
  fi

done < input

exec 3>&-

然后你将拥有输出文件中没有多个单词的所有行,你可以删除输入文件而不是mv输出到输入。

答案 1 :(得分:0)

我用过sed:我的txt文件是file.txt:

one
one two
one two tree for
one two

sed -i.bck '/\(.\+\)\(\s\+\)\(.*\)/d' file.txt
cat file.txt
one

答案 2 :(得分:0)

如果您的单词被&#34; 空格&#34;只需一行即可完成 sed 。让&#34; ./ myfile.txt &#34;是你的文件名,然后:

#!/bin/bash

sed -i "/[^ ][ ]/d" ./myfile.txt

正则表达式替换前面有非空格字符的所有空格字符,就像有两个单词的情况一样。