我有一个包含 3 列的 CSV 文件:
id,text,date
123,hi 你好吗?,2016-01-01
246,this is stackoverflow 我需要帮忙,2016-02-01
我只想编辑第 2 列,我只删除英文字符并保留中文字符。其他列保持不变。
我想要的输出:
id,text,date
123,你好吗?,2016-01-01
246,我需要帮忙,2016-02-01
有没有比这更好的方法来做到这一点:
cat myfile.csv|cut -d, -f2|sed 's/[a-zA-Z]*//g' > tmp.csv
paste -d, myfile.csv tmp.csv|awk -F, '{OFS=",";print $1,$7,$3}' >tmp2.csv
最佳答案
awk -F, 'BEGIN {OFS=","} { if (NR>1) {gsub(/[\x00-\x7F]/, "", $2)}; print }' test.txt
NR>1
: 不要在第一行操作 gsub(/[\x00-\x7F]/, "", $2)
: 去掉第 2 列中的 ascii 字符。doc 关于regex - awk 仅使用正则表达式编辑 1 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35074171/