这是我的档案:
$cat filename
10023a,vija45,8877au,qwer65,guru12 0099888das,baburam123,ganeshan1,feild55512我试图做的是使用sed下面的命令使输出仅为该文件中的6个charcter字
sed -ne 's/[a-z][0-9]\{6}/&/p' filename 它显示所有的单词和线条。
你能帮我一下吗。
预期输出为
vija45 baburam123
8877au ganeshan1
qwer65 feild55512
guru12 发布于 2015-05-26 07:29:09
用它:
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\}$'发布于 2015-05-26 07:19:59
我建议你用grep来匹配。
grep -o '\b\w\{6\}\b' file发布于 2015-05-26 07:42:19
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)。
https://stackoverflow.com/questions/30451914
复制相似问题