如何包装文本文件的第一行并将空格插入第二行(bash)

时间:2016-04-28 04:24:15

标签: bash

说我在文本文件中有以下行:

abcdefghijkl  

我想在每个第4个字符处包裹这一行,并在第二行的开头插入一个空格,直到结束:

abcd  
 efgh  
 ijkl

内置bash命令是否可行,或者我需要一个函数吗?我是bash的新手,我很感激一些建议。

2 个答案:

答案 0 :(得分:3)

一个简单的sed命令就足够了:

$ echo "abcdefghijkl" | sed -r 's/.{4}/&\n /g' | sed '/^\s*$/d'
abcd
 efgh
 ijkl
$

$ echo "abcdefghijkl" | sed 's/.\{4\}/&\n /g;s/\n\s*$//'
abcd
 efgh
 ijkl
$

答案 1 :(得分:0)

您可以使用字符串索引(例如${string:start:nchars}:)

进行相当简单的操作
str=abcdefghijkl
for ((i=0; i<${#str}; i+=4)); do
    echo " ${str:$i:4}" || echo "${str:$i:4}"
done

$ str=abcdefghijkl; for ((i=0; i<${#str}; i+=4)); do [ "$i" -gt "0" ] && \
echo " ${str:$i:4}" || echo "${str:$i:4}"; done

<强>输出

abcd
 efgh
 ijkl