我有一個 csv 檔案(以逗號分隔),其中包含
file1a.extension.extension,file1b.extension.extension
file2a.extension.extension,file2b.extension.extension
問題是,這些檔案的名稱如 file.extension.extension
我正在嘗試將兩列同時提供并洗掉所有擴展
我嘗試了一些變體:
cat /home/filepairs.csv | sed 's/\..*//' | parallel --colsep ',' echo column 1 = {1}.extension.extension column 2 = {2}
我期望輸出
column 1 = file1a.extension.extension column 2 = file1b
column 1 = file2a.extension.extension column 2 = file2b
但輸出:
column 1 = file1a.extension.extension column 2 =
column 1 = file2a.extension.extension column 2 =
sed 命令正在運行,但僅將第 1 列提供給并行
uj5u.com熱心網友回復:
目前所寫的sedonly 每行列印一個名字:
$ sed 's/\..*//' filepairs.csv
file1a
file2a
在哪里:
\.匹配第一個字面句點 (.).*匹配行的其余部分(即,第一個文字句點之后到行尾的所有內容)//說要洗掉從第一個文字句點到行尾的所有內容
我猜你真正想要的是每行兩個名字......一個sed想法:
$ sed 's/\.[^,]*//g' filepairs.csv
file1a,file1b
file2a,filepath2b
在哪里:
\.匹配第一個字面句點 (.)[^,]*匹配逗號(或行尾)之前的所有內容//g說要洗掉字面句號,之后的所有內容(直到逗號或行尾),并g說要重復執行(在這種情況下替換發生兩次)
注意:我的系統上沒有parallel,所以無法測驗 OP 代碼的那部分
uj5u.com熱心網友回復:
使用--plus:
$ cat filepairs.csv | parallel --plus --colsep , echo {1..} {2..}
file1a file1b
file2a file2b
如果輸入是 CSV:
$ cat filepairs.csv | parallel --plus --csv echo {1..} {2..}
file1a file1b
file2a file2b
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/536852.html
下一篇:合并管道的輸出
