如何使用unix脚本来显示所有'n'个字符的长字符串组? [英] How to use unix scripts to show all 'n' characters long group of strings?
问题描述
这是一种链接到另一个问题 - 代码高尔夫:颜色突出"重复的文本
我试图找出一种将文件分解为所有'n'个字符长组的方法。
例如:如果一个文件只包含以下文本:
ABCDEFGHIJ
我们希望将其分成3个集合,输出结果应该是:
ABC
BCD
CDE
DEF
EFG
FGH
GHI
HIJ
文件中的任何字符都不会与其他字符区别对待。也就是说,一个空间只是另一个应遵循上述规则的字符......
echoABCDEFGHIJ| sed -n':a; /^...$/ {p; b}; s /.../& \\\
/; P; s /.//; s / \\\
//; ba '
更广义的 sed
版本:
num = 5;回声ABCDEFGHIJ| sed -n:a; / ^。\ {$ num \} \ $ / {p; b}; s / .\ {$ num \} /& \\\
/; P; s /.//;s/\\\
//;ba
Bash和ksh:((i = 0; i< = $ {#string} -3; i ++)中的
string =ABCDEFGHIJ
));做echo $ {string:i:3};完成
zsh:
((i = 1; i <= $ {#string} -2; i ++)); string =ABCDEFGHIJ
做echo $ string [i,i + 2];完成
AWK: 编辑:添加了更广义的 This IS kind of linked to another question - Code golf: "Color highlighting" of repeated text I'm tying to figure out a way of breaking a file into all 'n' characters long groups. Eg: If a file comprises of ONLY the following text: And we want it broken into sets of 3, the output should be: No characters in the file are to be treated any differently from another. ie, a "space" is just another character which should follow the rule above... sed: A more generalized Bash and ksh: zsh: sh (specifically Dash): AWK: Edit: Added a more generalized 这篇关于如何使用unix脚本来显示所有'n'个字符的长字符串组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
<$ $ $ $(($ {#string} -2)))
for $ in $ count; pre $ string ='ABCDEFGHIJ'
count = $做b =$ b?;我在$ count中完成
; do b =$ {b%?}; echo$ {string%$ b};字符串= $ {#字符串?};完成
echoABCDEFGHIJ| awk -v num = 4'{for(i = 1; i
sed
版本和AWK版本。 p> ABCDEFGHIJ
ABC
BCD
CDE
DEF
EFG
FGH
GHI
HIJ
echo "ABCDEFGHIJ" | sed -n ':a;/^...$/{p;b};s/.../&\n/;P;s/.//;s/\n//;ba'
sed
version:num=5; echo "ABCDEFGHIJ" | sed -n ":a;/^.\{$num\}\$/{p;b};s/.\{$num\}/&\n/;P;s/.//;s/\n//;ba"
string="ABCDEFGHIJ"
for ((i=0;i<=${#string}-3;i++)); do echo ${string:i:3}; done
string="ABCDEFGHIJ"
for ((i=1;i<=${#string}-2;i++)); do echo $string[i,i+2]; done
string='ABCDEFGHIJ'
count=$(seq $((${#string}-2)))
for i in $count; do b="$b?"; done
for i in $count; do b="${b%?}"; echo "${string%$b}"; string="${string#?}"; done
echo "ABCDEFGHIJ" | awk -v num=4 '{for (i=1; i<length($0)-num;i++) print substr($0,i,num)}'
sed
version and an AWK version.