【发布时间】:2011-09-05 12:04:44
【问题描述】:
我想删除文件中具有特定字符“?”的所有行/行就我而言。我希望在 Bash 或 AWK 或 Perl 中有一个单行命令。谢谢
【问题讨论】:
标签: perl bash unix command-line awk
我想删除文件中具有特定字符“?”的所有行/行就我而言。我希望在 Bash 或 AWK 或 Perl 中有一个单行命令。谢谢
【问题讨论】:
标签: perl bash unix command-line awk
您可以使用sed“就地”修改文件:
sed -i "/?/d" file
或者,使用 grep:
grep -v "?" file > newfile.txt
【讨论】:
-i;一般来说,它不是其他版本的标准。
更好的是,只需一行使用sed
sed '/?/d' input
使用-i 就地编辑文件。
【讨论】:
perl -pe '/?/d' 不起作用。
perl -i -ne'/\?/ or print' file
或
perl -i -pe's/^.*?\?.*//s' file
【讨论】:
这里已经有 grep、sed 和 perl 解决方案 - 仅用于有趣的纯 bash 解决方案:
pattern='?'
while read line
do
[[ "$line" =~ "$pattern" ]] || echo "$line"
done
翻译
=~
|| - 打印该行【讨论】:
awk '!($0~/?/){print $0}' file_name
【讨论】: