带awk的内部管道

时间:2014-11-16 06:49:21

标签: awk

假设我有输入行:

输入:

{x:y} abc det uyt llu

如何处理它,以获得预期的输出:

输出:

{x:y} abc%det%uyt%llu

问题是如何连接字段2-end of line,并在该字符串中用%更改空间 其中separator是空格

我需要修复第一部分{x:y}并为字段2-end of line

实现管道

2 个答案:

答案 0 :(得分:2)

这是另一个awk

awk '{$1=$1;sub(/%/," ")}1' OFS="%" file

echo '{x:y} abc det uyt llu' | awk '{$1=$1;sub(/%/," ")}1' OFS="%"
{x:y} abc%det%uyt%llu

使用%OFS将所有空格更改为$1=$1,然后将第一个%更改为空格。

答案 1 :(得分:1)

你可以使用这个awk:

s='{x:y} abc det uyt llu'
awk '{printf "%s%s", $1, OFS; for (i=2; i<=NF; i++) printf "%s%s", $i, (i==NF)?RS:"%"}' <<< "$s"
{x:y} abc%det%uyt%llu

另一个awk:

awk '{printf "%s%s", $1, OFS; OFS="%"; $1=""; print substr($0, 2)}' <<< "$s"
{x:y} abc%det%uyt%llu