我的文件包含如下所示的数据:
{ "any1", "aaa.bbb.ccc.1.ddd", "var1" }
{ "any2", "aaa.bbb.ccc.1.eee", "toto" }
{ "an42", "aaa.bbb.ccc.1.fff", "titi" }
{ "an47", "aaa.bbb.ccc.2.eee", "var3" }
{ "any7", "aaa.bbb.ccc.2.ddd", "var12" }
{ "a789", "aaa.bbb.ccc.2.fff", "var14" }
{ "any1", "xxx.yyy.zzz.1.ddd", "var1" }
{ "any2", "xxx.yyy.zzz.1.eee", "toto" }
{ "an42", "xxx.yyy.zzz.1.fff", "titi" }
我想提取前缀"aaa.bbb.ccc"
所以命令应该返回
linux# command
1
2
我如何通过sed
,awk
,grep
,sort
来实现这一目标?
答案 0 :(得分:4)
例如,您可以说:
$ grep -Po '(?<=aaa\.bbb\.ccc\.)\d*' file | sort -u
1
2
获取aaa\.bbb\.ccc\.
之后的数字(注意我们将点数与点本身相匹配,而不是任何字符):
$ grep -Po '(?<=aaa\.bbb\.ccc\.)\d*' file
1
1
1
2
2
2
sort
他们找到了唯一的值:
$ grep -Po '(?<=aaa\.bbb\.ccc\.)\d*' file | sort -u
1
2
sed
如果您的-P
中没有grep
选项,则可以使用sed
:
$ sed -nr 's/^.*aaa\.bbb\.ccc\.([0-9]+).*$/\1/p' file
1
1
1
2
2
2
$ sed -nr 's/^.*aaa\.bbb\.ccc\.([0-9]+).*$/\1/p' file | sort -u
1
2
答案 1 :(得分:0)
- (void)updateScrollViewContentSize
{
float cellHeight = 40;
int numberOfRows = [noOfItemsInArray count];
float sizeOfContent = cellHeight * numberOfRows;
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, sizeOfContent);
}
有趣和1(posix)sed,未分类。 (GNU sed允许在线版本)
答案 2 :(得分:0)
Explicitly discard the result of the closure by assigning to '_'
替代方案:
awk
步骤:
$ awk -F\. '/aaa.bbb.ccc.[0-9]+/{b=$(NF-1);if (!(b in a)){ print b}a[b]++}' infile
分隔符设置为FS
dot
变量b
标记打印的索引键。a
不在b
打印索引(a的键)