我使用awk和sed用空格替换管道,这是我的代码:
awk -F "|" -v OFS=" " ' $1=$1 '
sed "s/|/ /g" try.log
但它删除了我数据中的所有管道。这是一个示例数据:
JAP|09|7777|TECHNOLOGY|AGRICULTURE|INDUSTRY
我想要的结果是:
JAP 09 7777|TECHNOLOGY|AGRICULTURE|INDUSTRY
提前致谢。
答案 0 :(得分:1)
Perl解决方案:
perl -pe '$c = 0; s/\|/ /, $c++ while $c < 2'
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed 's/|/ /;s// /' file
程序化解决方案可能是:
sed 'y/|/\n/;s/\n/|/3g;y/\n/ /' file
答案 2 :(得分:0)
试试这个内衬awk:
awk -F"|" '{a=""; for (i=1;i<=NF; i++)if(i <=3) a=a " "$i; else a=a "|"$i; sub("^[ ]","",a); print a}'
长格式:
BEGIN {
FS="|";
}
{
a="";
for (i=1; i<= NF; i++)
{
if (i <= 3)
{
a=a " "$i;
}
else
{
a=a "|"$i;
}
}
sub("^[ ]","",a);
print a;
}
输出:
echo "JAP|09|7777|TECHNOLOGY|AGRICULTURE|INDUSTRY" | awk -f script.awk
JAP 09 7777|TECHNOLOGY|AGRICULTURE|INDUSTRY
答案 3 :(得分:0)
awk '{sub(/\|09\|/," 09 ")}1' file
JAP 09 7777|TECHNOLOGY|AGRICULTURE|INDUSTRY