2013-11-21 18 views
0

我使用KornShell脚本处理。使用位置文件和密钥的固定位置过滤唯一行

我有此格式的位置文件:

XXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYY 

X是我的钥匙11 lenght,我想为过滤与唯一键约束此文件。

X是一个字符串类型至极能有这样的价值观:

FJUYHGRESJFYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 
ZNXKDDYHDNKYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 

我有测试此命令:

cat Stack.txt | uniq -D -s 11 > Result.txt 

谢谢您的帮助:)

回答

1

试试这个命令:

cat Stack.txt | uniq -w 11 > Result.txt 
1

说,如果你有: -

XXXXXXXXXXX:YYYYYYYYYYYYYYYYYYYYY 

然后你可以使用: -

while IFS=':' read field1 field2 
do 
    if [ $(echo "${field1}" | sed -n '/XXXXXXXXXXX/p') ] 
    then 
    (commands) ... 
    elif [ $(echo "${field1}" | sed -n '/key2/p') ] 
    then 
    (other commands) ... 
    fi 
done 
+0

我没有得到一个分离char和我的钥匙XXXXXXXXXXX可以采取不同的值。我需要把我的新文件中的唯一身份行用这个键 –

+0

如果你想这样做,你可能需要看看PostgreSQL。你不能用shell脚本真正做好关系工作。我的意思是,是的,你可以做相对简单的行/列的东西,但它不会像健壮。 – petrus4

0

我发现:)

在命令uniq的有-w参数:

-w Specifies the number of characters to compare in lines, after any characters and fields have been skipped 

所以我要创建这个命令:

cat Stack.txt | uniq的-w 11>的Result.txt