在shell脚本中,我尝试对CSV文件进行排序。某些字段可能包含分隔符,并引用它以正确处理此问题。我们假设我有一个文件:
from typing import TypeVar, Generic, Callable
T = TypeVar('T')
class Signal(Generic[T]):
def connect(self, connector: Callable[[T], None]) -> None:
pass
def emit(self, payload: T):
pass
class A:
def __init__(self) -> None:
self.signal = Signal[A]()
def do(self) -> None:
self.signal.emit(self)
def handle_b(b: "B") -> None:
print(b.something)
class B(A):
def __init__(self) -> None:
super().__init__()
self.signal.connect(handle_b)
@property
def something(self) -> int:
return 42
我想在第一列上排序,然后是第三列。结果应该是:
"2",D,Clair
1,R,Alice
"3","F","Dennis"
2,"P,F",Bob
字段中可能还有双重引号。通常,CSV将符合RFC 4180。
我尝试使用1,R,Alice
2,"P,F",Bob
"2",D,Clair
"3","F","Dennis"
执行此操作,但这不起作用,因为sort -t , -k 1,1 -k 3,3
并不了解CSV中引号的特殊含义。我无法找到让sort
以这种方式行事的方法。也许我应该使用另一个命令,但我找不到任何命令。
如何对CSV进行排序?