BASH自动完成空白,直到与价值
问题描述:
IM需要帮助的下一行: 我有一个这样具有输出文件:BASH自动完成空白,直到与价值
001 value
value
045 value
value
value
068 value
098 value
value
我需要一个命令来获得类似这样的输出:
001 value
001 value
045 value
045 value
045 value
068 value
098 value
098 value
答
很容易的与awk
:
awk '/^[0-9]/{prefix=$1;$1=""}{sub(/^ +/,"");print prefix,$0}' test.in
这适用于任何前缀从一个数字开始。
原始bash字符串操作。比sed
更容易理解,但硬编码有3个字符,不一定是数字,前缀。
while IFS= read -r line; do
if [[ "${line:0:3}" != " " ]]; then
prefix="${line:0:3}"
fi
printf '%s%s\n' "$prefix" "${line:3}"
done < test.in
这也可以用做sed
,虽然它比一般的sed
命令稍微更复杂。它假设3位数的前缀。 -E
适用于BSD sed
;如果您使用的是GNU sed
,则应将其替换为-r
。
sed -E '/^[0-9]{3} /{h
s/(...).*/\1/
x
n
}
G
s/...(.*)\n(.*)/\2\1/
' file.txt
问题中的格式不正确。他们是分开的线......如: “001值” “值” – Deeshey
对不起,即时通讯与本网站新,我不知道如何格式化线。我认为现在是好的。谢谢。 – Deeshey