Bash 查找长度为6个字符的单词

Bash 查找长度为6个字符的单词,bash,parsing,text-parsing,Bash,Parsing,Text Parsing,我有一个.txt文件 fhadja ksjfskdasd adasda sada s adasaaa 我只需要从那里提取长度为6个字符的单词 我需要获得的结果示例: fhadja adasda 谢谢。用GNU grep试试这个: grep -E '^.{6}$' file 输出: fhadja adasda fhadja 阿达斯达 您可以使用: grep -E '^.{6}$' file fhadja adasda 或使用awk: awk 'length($0)==6' file fha

我有一个.txt文件

fhadja
ksjfskdasd
adasda
sada
s
adasaaa
我只需要从那里提取长度为6个字符的单词

我需要获得的结果示例:

fhadja
adasda

谢谢。

用GNU grep试试这个:

grep -E '^.{6}$' file
输出:

fhadja adasda fhadja 阿达斯达 您可以使用:

grep -E '^.{6}$' file
fhadja
adasda
或使用awk:

awk 'length($0)==6' file
fhadja
adasda
或使用
sed

sed -rn '/^.{6}$/p' file
fhadja
adasda
或perl:

perl -ne 'print if 6 == tr/\n//c' file

如果文件可以包含空格,请确保匹配的是非空字符:

grep -oE '\<[[:graph:]]{6}\>' << END
 fhadja
   ksjfskdasd
   adasda
   sada s 123456
   s
 2 4 6
END

只是为了好玩:
bash中的另一个解决方案

while read -r line
do
    if [ ${#line} -eq 6 ]
    then
      echo $line
    fi
done < file.txt
读取时-r行
做
如果[${line}-等式6]
然后
回音$线
fi
完成
你得到

fhadja adasda fhadja 阿达斯达
但如果我还需要所有以字母“f”开头,长度为6的单词?非常感谢。然后使用:
grep-E'^f.{5}$'文件
fhadja adasda