我这样做
sort -f -t , -k 2,2 file -o file
我有什么方法可以忽略某些模式,例如“ABC”,所以我得到了这个
Dog
ABCFrog
Lion
或者这个
DogFrog
DogABCLion
DogZebra
我如何使用它以及我希望它做什么的示例。
这
http://randomUrl.com/icon.png, Dog ABC (C) http://AnotherUrl.com
http://randomUrl.com/icon.png, Dog (A) http://AnotherUrl.com
http://randomUrl.com/icon.png, Dog (B) http://AnotherUrl.com
要
http://randomUrl.com/icon.png, Dog (A) http://AnotherUrl.com
http://randomUrl.com/icon.png, Dog (B) http://AnotherUrl.com
http://randomUrl.com/icon.png, Dog ABC (C) http://AnotherUrl.com
我希望在排序时跳过/忽略“ABC”。
谢谢, 克里斯
答案 0 :(得分:1)
实现此目的的一种方法是从每个字符串中删除模式,但也在分隔符后的同一行中包含原始字符串,以便sort
对第一个无模式版本进行操作,但原始字符串版本保留在同一行。然后删除无模式版本:
sed 's/\(.*\)\( ABC \)\?\(.*\)/\1 \3\t&/' file |
sort -f -t , -k 2,2 |
cut -f2
示例输入:
url1, Dog ABC (C) url2
url1, Dog (A) url2
url1, Dog (B) url2
sed
输出:
url1, Dog (C) url2 url1, Dog ABC (C) url2
url1, Dog (A) url2 url1, Dog (A) url2
url1, Dog (B) url2 url1, Dog (B) url2
sort
输出:
url1, Dog (A) url2 url1, Dog (A) url2
url1, Dog (B) url2 url1, Dog (B) url2
url1, Dog (C) url2 url1, Dog ABC (C) url2
cut
输出:
url1, Dog (A) url2
url1, Dog (B) url2
url1, Dog ABC (C) url2