Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
哪个linux命令行工具从字符串开头提取所有字符子字符串?_Linux_String_Command Line - Fatal编程技术网

哪个linux命令行工具从字符串开头提取所有字符子字符串?

哪个linux命令行工具从字符串开头提取所有字符子字符串?,linux,string,command-line,Linux,String,Command Line,我有一个文件,其中有~100K个以换行符分隔的字符串,没有空格。字符串的长度从2到10不等。我的任务是处理每一行并在同一行上输出所有从头到尾的子字符串。例如: 输入字符串为 ABCDEF 预期产量为 A AB ABC ABCD ABCDE ABCDEF A AB ABC ABCD ABCDE ABCDEF 子字符串在输出中的顺序并不重要 编写Python脚本很容易,但我很好奇,使用普通的Linux命令行工具是否可以编写Python脚本。是的。我可以帮你开始。 计算字符数: # printf

我有一个文件,其中有~100K个以换行符分隔的字符串,没有空格。字符串的长度从2到10不等。我的任务是处理每一行并在同一行上输出所有从头到尾的子字符串。例如:

输入字符串为

ABCDEF
预期产量为

A AB ABC ABCD ABCDE ABCDEF
A AB ABC ABCD ABCDE ABCDEF
子字符串在输出中的顺序并不重要


编写Python脚本很容易,但我很好奇,使用普通的Linux命令行工具是否可以编写Python脚本。

是的。我可以帮你开始。 计算字符数:

# printf ABCDEF|wc -m
6
把它们删掉:

# echo ABCDEF|cut -c 1-1
A
# echo ABCDEF|cut -c 1-2
AB

假设将bash编程计算为普通的linux命令行工具,那么可以使用count构造一个循环,并替换最后一个range参数。

是。我可以帮你开始。 计算字符数:

# printf ABCDEF|wc -m
6
把它们删掉:

# echo ABCDEF|cut -c 1-1
A
# echo ABCDEF|cut -c 1-2
AB

假设您将bash编程计算为普通的linux命令行工具,您可以使用count构造一个循环,并替换最后一个range参数。

使用awk非常容易,我的经验非常有限

{
for ( i = 1 ; i <= length($0) ; i++ )
 if ( i < length($0) )
  print "%s\t", substr($0,1,i)
 else
  printf "%s\n", $0
}
{

对于(i=1;i来说,使用awk非常容易,我的经验非常有限

{
for ( i = 1 ; i <= length($0) ; i++ )
 if ( i < length($0) )
  print "%s\t", substr($0,1,i)
 else
  printf "%s\n", $0
}
{

对于(i=1;i刚刚在@Gary Armstrong的答案中添加了一个循环,并提供了漂亮的输出(
tr
)作为附加步骤

#!/bin/bash
var=ABCDEF 
for (( i=1; i<=${#var}; i++ )); do
echo -n "$var"|cut -c 1-${i}|tr "\n" " "
done

只是在@Gary Armstrong的答案中添加了一个循环,作为附加步骤,它的输出非常漂亮(
tr

#!/bin/bash
var=ABCDEF 
for (( i=1; i<=${#var}; i++ )); do
echo -n "$var"|cut -c 1-${i}|tr "\n" " "
done