删除包含特定字符的文件中的所有行

时间:2011-05-31 13:19:05

标签: perl bash unix command-line awk

我想删除具有特定字符的文件中的所有行/行,'?'在我的情况下。我希望在Bash或AWK或Perl中有一个单行命令。谢谢

5 个答案:

答案 0 :(得分:9)

您可以使用sed“就地”修改文件:

sed -i "/?/d" file

或者,使用grep:

grep -v "?" file > newfile.txt

答案 1 :(得分:6)

更好的是,使用sed

只需一行
sed '/?/d' input

使用-i来编辑文件。

答案 2 :(得分:3)

perl -i -ne'/\?/ or print' file

perl -i -pe's/^.*?\?.*//s' file

答案 3 :(得分:2)

这里已经有了grep,sed和perl解决方案 - 仅限于有趣,纯粹的bash:

pattern='?'
while read line
do
    [[ "$line" =~ "$pattern" ]] || echo "$line"
done

翻译

  • 对于STDIN的每一行
  • 将其与模式=~
  • 匹配
  • 如果匹配不成功|| - 请打印出

答案 4 :(得分:1)

awk '!($0~/?/){print $0}' file_name