就像是 cat file.name | perl -pe 's/([^ ]+ [^ ]+) /\1 /g'
cat file.name | perl -pe 's/([^ ]+ [^ ]+) /\1 /g'
你可以使用这个awk:
awk '{printf "%s", $1; for (i=2; i<=NF; i++) printf "%s", (i%2 ? " " : " ") $i; print ""}' file 1 1 1 1 2 1 2 2 2 1 1 1 2 2 1 2 1 1 1 1 1 1 2 2 1 1 1 1 2 2 2 2 1 1 1 1 1 1 2 2 1 1 1 1 2 2 2 2
你想要一个简单的 sed 命令就好
sed
echo "1 1 1 1 2 1 2 2 2 1 1 1 2 2 1 2" | sed 's/ \([^ ]\) / \1 /g'
这个有一个很难看到空间的小虫子。我将首先使用x:
echo "1 1 1 1 2 1 2 2 2 1 1 1 2 2 1 2" | sed 's/ \([^ ]\) /xx\1xxx/g' # Result: 1xx1xxx1xx1xxx2xx1xxx2xx2xxx2xx1xxx1xx1xxx2xx2xxx1 2
哇!当您有偶数个字段时,将跳过最后一个分隔符。你可以修补它(现在我将使用 y 用于标记补丁)。
y
echo "1 1 1 1 2 1 2 2 2 1 1 1 2 2 1 2" | sed 's/ \([^ ]\) /xx\1xxx/g; s/\([^ ]\) \([^ ]*\)$/\1yy\2/' # Result 1xx1xxx1xx1xxx2xx1xxx2xx2xxx2xx1xxx1xx1xxx2xx2xxx1yy2
现在替换temp x 和 y 有空格:
x
echo "1 1 1 1 2 1 2 2 2 1 1 1 2 2 1 2" | sed 's/ \([^ ]\) / \1 /g; s/\([^ ]\) \([^ ]*\)$/\1 \2/'
另一个 awk
awk
$ awk -v OFS=" " '{for(i=2;i<=NF;i+=2)$i=$i" "}1' file