Ran*_*jan 6 awk text-processing
我需要取以波浪号 (~) 分隔的字段的总和。我的问题是我的数据也有分隔符转义。
1~CEO~ashok\~kumar~1000
Run Code Online (Sandbox Code Playgroud)
正如我们在上面的第三个字段中看到的,我们已经转义了我想避免的分隔符。我正在运行以下不处理此问题的命令。
$ cat test.out|awk -F'~' 'BEGIN {sum=0} {sum+=$4} END{print sum}'
Run Code Online (Sandbox Code Playgroud)
假设test.out
数据为:
1~CEO~ashok\~kumar~1000
2~CFO~Ranjan~2000
3~CEO~kumar~1000
Run Code Online (Sandbox Code Playgroud)
所以我的输出应该是 4000。但目前我的命令只有 3000!
只需在处理之前将转义分隔符更改为其他内容即可awk
。这可以通过以下方式完成sed
:
$ cat test.out| sed 's/\\~/=/g' | \
awk -F'~' 'BEGIN {sum=0} {sum+=$4} END{print sum}'
4000
Run Code Online (Sandbox Code Playgroud)
而且,正如通常的情况一样,cat
不需要:
$ sed 's/\\~/=/g' test.out | awk -F'~' 'BEGIN {sum=0} {sum+=$4} END{print sum}'
Run Code Online (Sandbox Code Playgroud)