这是我的档案:
$cat filename
10023a,vija45,8877au,qwer65,guru12 0099888das,baburam123,ganeshan1,feild55512
我尝试做的是使用sed below命令将输出设置为该文件中只有6个字符
sed -ne 's/[a-z][0-9]\{6}/&/p' filename
显示所有单词和行
你能不能请任何人帮助我......
预期输出
vija45 baburam123
8877au ganeshan1
qwer65 feild55512
guru12
答案 0 :(得分:1)
我建议您使用grep进行匹配。
grep -o '\b\w\{6\}\b' file
答案 1 :(得分:1)
使用:
tr "," "\n" <file | grep '^.\{6\}$\|^.\{10\}$'
首先tr
用换行符替换所有,
,我们在一行中的逗号之间有每个段。
然后grep
搜索6或10个字符的长行并打印出来。
根据您给出的示例,输出将是:
10023a
vija45
8877au
qwer65
baburam123
feild55512
如果guru12 0099888das
也必须匹配为6个字符和10个字符的单词,那么只需更改tr
部分以包含空格:
tr ", " "\n" <file | grep '^.\{6\}$\|^.\{10\}$'
答案 2 :(得分:1)
sed '
# keep only 6 char word (and space) by removing less or more than 6 character word
s/.*/,&,/
s/[^[:space:],]\{11,\}//g;s/[[:space:],][^[:space:],][[:space:],]\{1,5\}/,/g;s/[[:space:],][^[:space:],][[:space:],]\{7,9\}/,/g
# clean space element
s/[[:space:],]\{2,\}/,/g;s/^[[:space:],]*//g;s/[[:space:],]*$//g
# remove empty line
/$[[:space:],]*$/d
# 1 word per line (optional)
y/ ,/\n\n/
' YourFile
详情:
,
分开 更正:忘记一些g
和一个小字删除的小错误,并添加10个字符(仅在第一个版本中取6)