我有一個txt文件,我只需要在引號之間用空格替換逗號。在兩個字符之間替換逗號
例如:
This,is,example,"need,delete comma",xxxx
而且結果應該是:
This,is,example,"need delete comma",xxxx
我有這樣的命令,但它是錯誤的:
sed -i '/^"/,/^"/s/.,/ /' output.txt
我有一個txt文件,我只需要在引號之間用空格替換逗號。在兩個字符之間替換逗號
例如:
This,is,example,"need,delete comma",xxxx
而且結果應該是:
This,is,example,"need delete comma",xxxx
我有這樣的命令,但它是錯誤的:
sed -i '/^"/,/^"/s/.,/ /' output.txt
試試這個:
AWK「NR%2-1 {GSUB(/,/, 「 」)} 1' RS = \「 ORS = \」 input.txt中> output.txt的
輸入:
這是,例如, 「需要,刪除逗號」,XXXX
輸出:
這是,例如, 「需要刪除逗號」,XXXX
這會在多行輸出結尾添加末尾的'''',你可以從'testfile'的回答中進行測試https://stackoverflow.com/questions/46118785/replace-comma-between-two-characters/46119331 #46119331 – RomanPerekhrest
複雜AWK溶液:
testfile
樣品:
This,is,example,"need,delete comma",xxxx
asda
asd.dasd,asd"sdf,dd","sdf,sdfsdf"
"some,text,here" another text there""
作業:
awk -F'"' '$0~/"/ && NF>1{ for(i=1;i<=NF;i++) { if(!(i%2)) gsub(/,/," ",$i) }}1' OFS='"' testfile
輸出:
This,is,example,"need delete comma",xxxx
asda
asd.dasd,asd"sdf dd","sdf sdfsdf"
"some text here" another text there""
下面的awk如何查找「...」之間的匹配,然後簡單地刪除該匹配中的所有逗號。然後用舊的「..」值替換它的新值。
awk '{match($0,/\".*\"/);val=substr($0,RSTART,RLENGTH);gsub(/,/," ",val);gsub(/\".*\"/,val,$0)} 1' Input_file
EDIT1:在任何一行看到RomanPerekhrest的INPUT_FILE在上面的代碼,這將禁止更改變化不大「」後。
awk '{match($0,/\".*\"/);val=substr($0,RSTART,RLENGTH);gsub(/[^","],/," ",val);gsub(/\".*\"/,val,$0)} 1' Input_file
回聲 '這是,例如, 「需要,刪除逗號」,XXXX' | AWK -F \」「{子(/,/,」」,$ 2);打印}」 OFS = \ 「
這是例如」需要刪除逗號「,xxxx
我很好奇,爲什麼要替換逗號?你是否想要解決沒有適當的CSV解析器? –