我是这些awk和shell的新手,并且遇到了一个简单但合乎逻辑的问题......
输入文件:
6000 9876 5675 ....
8576 8765 9845 ...
....
输出文件:(必填)
60 00 98 76 56 75 ....
85 76 87 65 98 45 ...
....
将输出转换为输入是一项相当容易的任务
awk '{printf("%s%s %s%s %s%s %s%s", $1, $2, $3, $4, $5, $6, $7, $8)}' output_file
> input_file
但是将输入转换为输出我没有猜测
(虽然我认为NF
的一些逻辑可以解决这个问题,但事先并不知道字段数,但主要问题是即使我不知道。 fileds然后如何进行?
分钟。要阅读的单位将像$1,$2
等。我需要打破它们,需要在它们之间插入一个空格。
我对regex
了解不多,但我会亲自动手。可能会对sed
进行一些操纵,regex
可以帮助我。
请提供宝贵的建议。
答案 0 :(得分:2)
以下是一个sed示例:
$ echo "1234 5678 9012"|sed -e 's/\([0-9][0-9]\)\([0-9][0-9]\)/\1 \2/g'
12 34 56 78 90 12
答案 1 :(得分:1)
tr -d ' ' < inputFile | sed 's/../& /g'
或者避免第一个tr:
sed -e 's/ //g' -e 's/../& /g'
答案 2 :(得分:0)
这需要gawk:
kent$ echo "6000 9876 5675
8576 8765 9845"|awk '{for(i=1;i<=NF;i++)$i=gensub(/^([0-9]{2})([0-9]{2})$/,"\\1 \\2","g",$i);print }'
60 00 98 76 56 75
85 76 87 65 98 45