说我在文本文件中有以下行:
abcdefghijkl
我想在每个第4个字符处包裹这一行,并在第二行的开头插入一个空格,直到结束:
abcd
efgh
ijkl
内置bash命令是否可行,或者我需要一个函数吗?我是bash的新手,我很感激一些建议。
答案 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