带awk的内部管道
假设我有输入行: 输入:带awk的内部管道,awk,Awk,假设我有输入行: 输入: {x:y} abc det uyt llu 如何处理它,以获得预期的输出: 输出: {x:y} abc%det%uyt%llu 问题是如何将字段连接到行的末尾,并在该字符串中用% 分隔符是空间 我需要固定的第一部分{x:y}和字段2-end-of-line的实现管道您可以使用此awk: s='{x:y} abc det uyt llu' awk '{printf "%s%s", $1, OFS; for (i=2; i<=NF; i++) printf "%s
{x:y} abc det uyt llu
如何处理它,以获得预期的输出:
输出:
{x:y} abc%det%uyt%llu
问题是如何将字段连接到行的末尾,并在该字符串中用%
分隔符是空间
我需要固定的第一部分{x:y}和字段2-end-of-line的实现管道您可以使用此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
s='{x:y}abc det uyt llu'
awk'{printf“%s%s”,$1,of;for(i=2;i这里是另一个awk
awk '{$1=$1;sub(/%/," ")}1' OFS="%" file
使用OFS
和$1=$1
将所有空格更改为%
,然后将第一个%
更改为空格。第二个更容易理解:)@anubhava,Tnx+1或正确的方法,但IMHOawk-vofs='''''''{$1=$1;sub(OFS,FS)}最好使用1'文件
,这样您就不会对OFS进行两次硬编码,不会对默认FS值的副本进行硬编码,也不会在使用OFS变量之前对其进行可视化设置。
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