shell 字符串转换成数组

#! /bin/bash

str="gnome-ctor nar pcmanfm flashot gi "

arr=(${str//A/ })   A 为需要制定的间隔符此处是空格 A/  A/后有一空格不可省略

for s in ${arr[@]}
do
echo $s
done
 

当初转数组是为了方便提取按照逗号分割的每一个,然后在打印出来,变成一列

后来发现直接用awk就可以搞定,不用再转数组了,那么麻烦

cat xxx | awk -F ',' '{for (i=1;i<=NF;i++) print $i}'

然后就可以随心所欲的用vim对其进行列操作了ctrl v

如果要是在转换为指定分割一行 用vim的替换 :%s/\n//g 即将换行替换成了空达到间接删除的目的

案例 

行->列  假设test文本内容为 sd,sw,er,sfd,sfasg,sfgs,afas,afas

cat test | awk -F ',' '{for(i=1;i<=NF;i++) print $i}'

列转行 直接vim编辑 替换 :%s/\n//g 将回车替换成空变相删除

如果要在每行后添加逗号可以

sed -i  's/$/&,/g' test2

你可能感兴趣的:(linux)