我有csv文件,其中第一個([)和第二個最後一個列(])包含特殊字符。下面使用bash刪除csv文件中的特殊字符
col1 col2 col3 ..... coln-1 coln
[number number number ..... number] number
給出一個例子我想從第一和]
從倒數第二個欄刪除[
使用bash腳本
與此sed 's/]//g' file
,我可以刪除]
。但是,我有與[
相同的語句錯誤。
我有csv文件,其中第一個([)和第二個最後一個列(])包含特殊字符。下面使用bash刪除csv文件中的特殊字符
col1 col2 col3 ..... coln-1 coln
[number number number ..... number] number
給出一個例子我想從第一和]
從倒數第二個欄刪除[
使用bash腳本
與此sed 's/]//g' file
,我可以刪除]
。但是,我有與[
相同的語句錯誤。
您可以使用awk
:
awk '{gsub(/[][]/,"",$1); gsub(/[][]/,"",$(NF-1))} 1' file
或者sed
但不會被限制在第一或第二到最後一列:
sed -e 's/[][]//g' file
的關鍵是,如果你有其中的正則表達式[][]
在開始[
後立即關閉]
它被認爲是字符類的一部分而不是正則表達式元字符。
試試這個:
sed 's/[\[\]]//g' test.csv
然而,這可以通過使用tr
能夠除去給人物做得更快
sed -i -e 's/^\[\(.*\)\] \(-?[0-9\.]*\)$/\1 \2/g' $file
^^^ ^^ ^^ ^ ^^^
| || || | | | | | + -the second match (the number)
| || || | | | | +---- the first match (the n-1 first fields)
| || || | | | +------ end of line
| || || | | +--------------- a number
| || || | +------------------- save in memory (\2)
| || || +---------------------- your closing bracket
| || |+-------------------------- the n-1 first fields
| || +--------------------------- save in memory (\1)
| |+----------------------------- your opening bracket
| +------------------------------ beginning of line
+-------------------------------- substitution mode
這是什麼意思,在英語中,是「執行替代,以[[,包含一堆東西(並記住它們)開頭的行,以及之後的a]之後的數字(記住它)由第一堆東西和數字組成。「
-e
表示「執行一些正則表達式操作」,而-i
表示「用輸出的命令覆蓋輸入文件」。
awk '{gsub(/[\[\]]/,"")}1' file
col1 col2 col3 ..... coln-1 coln
number number number ..... number number
我想看看我是否可以使用'sed'命令。 – cpwah
ok,然後顯示你的'sed'命令。 – anubhava
用這個'sed's /] // g'file',我可以刪除']'。但是,我有''語句相同的錯誤。 @anubhava – cpwah