我有一个包含1000行的文件,每行都由两个单词组成,用空格分隔。如果最后一个单词长度大于7个字符,我该如何仅打印每一行?可以使用awk RLENGTH吗?在Perl中是否有更简单的方法?
@OP,awk 的 RLENGTH 在调用 match()
函数时使用。相反,使用 length()
函数来检查字符的长度。
awk 'length($2)>7' file
如果你在使用bash,可以使用shell命令解决:
while read -r a b
do
if [ "${#b}" -gt 7 ];then
echo $a $b
fi
done <"file"
perl -ane 'print if length($F[1]) > 7'
perl -ne '@a=split/\s+/; print if length($a[1]) > 7' input_file.txt
使用的选项:
-n 假设程序周围有 'while () { ... }' 循环 -e 'command' 程序的一行代码 (可以使用多个 -e,省略 programfile)
您可以像 Chris 一样使用自动分割选项
-a 在 -n 或 -p 模式下启用自动分割模式(将 $_ 分割为 @F)
perl -ane 'length $F[1] > 7 && print' <input_file>
perl -lane 'print if (length($F[$#F]) > 7)' fileName
或者
perl -pae '$_ = "" if (length($F[$#F]) <= 7)' fileName