Sed

在 csv 文件中的特定嵌入字元之後刪除列中的所有內容

  • April 4, 2020

我需要刪除 CSV 文件中特定字元之後出現在列中的所有內容。這是它目前的格式:

2020-01-01T12:00:00,Transaction Description,Initiator,$00.00

我想刪除出現在 T 之後的第一列中的內容,使其看起來像:

2020-01-01,Transaction Description,Initiator,$00.00

我嘗試了 sed 但它沒有按預期工作。

以與Timur 使用 Perlsed類似的方式使用標準:

$ sed 's/T[^,]*//' file
2020-01-01,Transaction Description,Initiator,$00.00

T這通過替換的方式從每行的第一個開始刪除所有文本,直到(但不包括)第一個逗號。

重定向到新文件以保存結果。

使用這個 Perl 單行:

perl -pe 's{T[^,]*}{}' input_file > output_file

在這裡,

-e命令行標誌告訴 Perl 使用行內後面的程式碼,而不是在指定腳本中查找程式碼,

-p告訴 Perl 一次循環輸入一行,在執行指定程式碼後列印它,

s{T[^,]*}{}替換T後面除,零次或多次以外的任何字元(*指定貪婪或最長匹配)。這“吃掉”了以第一個 T 開頭的字元,包括在內,並以第一個逗號結尾,不包括在內。

引用自:https://unix.stackexchange.com/questions/577809