DJJ*_*113 3 sed text-processing csv
我有一个包含 10 个不同字段的 CSV 文件(,
是分隔符)。示例数据:
student-id,last,first,hwk1,hwk2,hwk3,exam1,hwk4,hwk5,exam2
pts-avail,,,100,150,100,200,150,100,300
991-78-7872,Thompson,Ken,95,143,79,185,135,95,259
Run Code Online (Sandbox Code Playgroud)
我需要交换field2
和field3
使用,sed
但很难理解如何编写正则表达式。
我尝试过其他变体:
sed 's/\(.*[,]\)\(.*[,]\)\(.*[,]\)/\1\3\2/g' test
Run Code Online (Sandbox Code Playgroud)
在我的测试文件中:
abc,def,ghi,jkl
1234,5678,abcd,efgh
Run Code Online (Sandbox Code Playgroud)
它工作正常......我已经研究了一段时间,但无法弄清楚。任何人都能够提供一些方向?
尝试:
sed 's/^\([^,]*,\)\([^,]*,\)\([^,]*\)/\1\3\2/'
Run Code Online (Sandbox Code Playgroud)
分解:
'^' start at the beginning of the line
\( \) a grouping
[^,] any character except ','
* zero or more times
, the character ','
Run Code Online (Sandbox Code Playgroud)
该\([^,]*,\)
重复三次。该行的其余部分未更改且不匹配。
使用 awk:
awk 'BEGIN {FS=OFS=","}{t=$2;$2=$3;$3=t;print}'
Run Code Online (Sandbox Code Playgroud)