首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux文件中只打印6和10个charcters单词。

在linux文件中只打印6和10个charcters单词。
EN

Stack Overflow用户
提问于 2015-05-26 07:15:40
回答 3查看 491关注 0票数 2

这是我的档案:

代码语言:javascript
复制
$cat filename  
10023a,vija45,8877au,qwer65,guru12 0099888das,baburam123,ganeshan1,feild55512

我试图做的是使用sed下面的命令使输出仅为该文件中的6个charcter字

代码语言:javascript
复制
sed  -ne 's/[a-z][0-9]\{6}/&/p' filename     

它显示所有的单词和线条。

你能帮我一下吗。

预期输出为

代码语言:javascript
复制
vija45           baburam123  
8877au           ganeshan1   
qwer65           feild55512  
guru12 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-26 07:29:09

用它:

代码语言:javascript
复制
tr "," "\n" <file | grep '^.\{6\}$\|^.\{10\}$'

首先,tr用换行符替换所有的,,在一行的逗号之间有每个段。

然后grep搜索6或10个字符的长行并打印它们。

对于给定的示例,输出将是:

代码语言:javascript
复制
10023a
vija45
8877au
qwer65
baburam123
feild55512

如果guru12 0099888das还必须匹配为6个字符和10个字符的单词,那么只需将tr部分更改为包含空格:

代码语言:javascript
复制
tr ", " "\n" <file | grep '^.\{6\}$\|^.\{10\}$'
票数 1
EN

Stack Overflow用户

发布于 2015-05-26 07:19:59

我建议你用grep来匹配。

代码语言:javascript
复制
grep -o '\b\w\{6\}\b' file
票数 1
EN

Stack Overflow用户

发布于 2015-05-26 07:42:19

代码语言:javascript
复制
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

详细信息:

  • 打印所有6个字母的单词,在行中找到(每个输出行打印一个字的选项)
  • 自我解释
  • 适用于,分离

更正:忘记一些g和一个小错误,移除小单词,添加10个字符(只在第一版中取6)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30451914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档