我想将一个字符串分成两半并按顺序打印它们。例如:
abcdef
Run Code Online (Sandbox Code Playgroud)
进入
abc
def
Run Code Online (Sandbox Code Playgroud)
有没有简单的方法可以做到,或者需要一些字符串处理?
jes*_*e_b 17
变量的前半部分将是:
${var:0:${#var}/2}
Run Code Online (Sandbox Code Playgroud)
变量的后半部分将是:
${var:${#var}/2}
Run Code Online (Sandbox Code Playgroud)
所以你可以使用:
printf '%s\n' "${var:0:${#var}/2}" "${var:${#var}/2}"
Run Code Online (Sandbox Code Playgroud)
您还可以使用以下 awk 命令:
awk 'BEGIN{FS=""}{for(i=1;i<=NF/2;i++)printf $i}{printf "\n"}{for(i=NF/2+1;i<=NF;i++){printf $i}{printf "\n"}}'
Run Code Online (Sandbox Code Playgroud)
$ echo abcdef | awk 'BEGIN{FS=""}{for(i=1;i<=NF/2;i++)printf $i}{printf "\n"}{for(i=NF/2+1;i<=NF;i++){printf $i}{printf "\n"}}'
abc
def
Run Code Online (Sandbox Code Playgroud)
split在这里使用字符串和命令替换:
var=abcdef
printf '%s\n' "$(split -n1/2 <<<$var)" "$(split -n2/2 <<<$var)"
Run Code Online (Sandbox Code Playgroud)
另一个awk脚本可以是:
echo abcdef | awk '{print substr($0,1,length/2); print substr($0,length/2+1)}'
Run Code Online (Sandbox Code Playgroud)