Awk以特殊字符添加[]

时间:2018-11-05 23:20:28

标签: bash shell unix

如果列中包含特殊字符或数字,但末尾用逗号,,则我尝试添加[]。第一行必须保持在文件中。

当前:

CREATE TEST 
a,
b,
23_test,

期望:

CREATE TEST 
a,
b,
[23_test],

3 个答案:

答案 0 :(得分:1)

假设特殊字符是数字,空格,减号,加号,点和下划线(请根据您的定义修改图案),怎么做:

awk 'NR>1 && /[-0-9_+. ]/ {$0 = "[" gensub(",$", "", 1) "],"} {print}' input.txt

如果您可以确定特殊字符是除字母和逗号之外的任何其他字符,请改用

awk 'NR>1 && /[^a-zA-Z,]/ {$0 = "[" gensub(",$", "", 1) "],"} {print}' input.txt

希望这会有所帮助。

答案 1 :(得分:0)

awk 'NR>1 && /[-0-9_+. ]/ {$0 = "[" gensub(",$", "", 1) "],"} {print}' <filename.out> | sed 's/, ]/]/'

答案 2 :(得分:0)

awk '{sub(/23_test/,"[23_test]")}1' file

CREATE TEST 
a,
b,
[23_test],