我之前在这里得到了类似的问题,但这一次对我来说有点挑战,我需要的是删除所有问题。名称“\ WAPNER | john | M \”之间
删除反斜杠也是一个加分。
档案
10.46|5060|100002366551140|\WAPNER| john | M\ |100002366551750
期望的输出
10.46|5060|100002366551140|\WAPNER john M\ |100002366551750
如果您的解决方案也可以使用带有单斜杠的名称,那将是完美的。
10.46|5060|100002366551140|\WAPNER| M\ |100002366551750
输出
10.46|5060|100002366551140|\WAPNER M\ |100002366551750
谢谢
答案 0 :(得分:2)
试试这个
awk -F '\\' '{ gsub("|", "", $2); print $0 }' inputfile > newfile
答案 1 :(得分:2)
这可能适合你(GNU Sed):
sed -r '/\\[^\\]*\\/{s//\n&\n/;h;s/[\\|]//g;G;s/.*\n(.*)\n.*\n(.*)\n.*\n/\2\1/}' file
答案 2 :(得分:1)
$ echo "10.46|5060|100002366551140|\WAPNER| john | M\ |100002366551750" | awk -F'|' '{print $1"|"$2"|"$3"|"$4$5$6"|"$7}' | sed s.\\\\..g
10.46|5060|100002366551140|WAPNER john M |100002366551750
注意它只会假设总有3'|' chars to remove。
更新:似乎我没有注意到标题 - 如果你想删除所有'|'在一对'之间的字符,jim mcnamara的解决方案更好。
答案 3 :(得分:0)
试试这个
sed -re 's/\\(\w+)(\|)( \w* )(\|)([ A-Za-z]+)\\/\1\3\5/g' temp.txt
输出
10.46|5060|100002366551140|WAPNER john M |100002366551750