什么linux命令行工具从字符串的开头提取所有字符子字符串?
问题描述:
我有一个带有~100K换行符分隔字符串的文件,没有空格。字符串的长度在2到10之间变化。我的任务是处理每一行,并在同一行上输出从头开始的所有子字符串。例如:什么linux命令行工具从字符串的开头提取所有字符子字符串?
输入字符串为
ABCDEF
预期的输出是
A AB ABC ABCD ABCDE ABCDEF
在输出串的顺序并不重要。
编写Python脚本很容易,但我很好奇是否可以使用纯Linux命令行工具。
答
是的。我可以让你开始。 数字符:
# printf ABCDEF|wc -m
6
把它们剪下来:
# echo ABCDEF|cut -c 1-1
A
# echo ABCDEF|cut -c 1-2
AB
假如你算bash编程为纯Linux的命令行工具,您可以使用计数构建一个循环,并取代过去的范围的说法。
答
用awk很容易做到这一点,我的经验非常有限。
{
for (i = 1 ; i <= length($0) ; i++)
if (i < length($0))
print "%s\t", substr($0,1,i)
else
printf "%s\n", $0
}
的“for”循环越过从字符串中的所有长度和调用每个索引值的SUBSTR()函数。唯一的特例是最后一次迭代 - 必须返回整个字符串。这是为了避免行尾的尾部标签。
答
刚刚在@Gary Armstrong的回答中添加了一个循环,输出相当漂亮(tr
)作为额外的步骤。
#!/bin/bash
var=ABCDEF
for ((i=1; i<=${#var}; i++)); do
echo -n "$var"|cut -c 1-${i}|tr "\n" " "
done
输出: -
A AB ABC ABCD ABCDE ABCDEF