用字符串“\ n”分隔几行中的行,并在每行的开头附加行号

时间:2013-12-13 16:32:51

标签: shell unix sh

我试图通过字符串“\ n”将多行中文件的每一行拆分,在新文件的每一行的开头添加原始文件的编号。我在一个例子中解释它:

原始文件:

   2,5,6,\n6,3,4\n7,8,3
   23,4,1,\n5,5,6,\n2,3,8

我想要的文件

   1,2,5,6
   1,6,3,4
   1,7,8,3
   2,23,4,1
   2,5,5,6
   2,2,3,8

我尝试使用以下代码,但根本不起作用:

a=1
while read line
do 
   sed 's/^/tty/' "$line\n" >>file.csv
   tr -s '\n' >> out.csv
   a=`expr $a + 1`
done < file.csv

3 个答案:

答案 0 :(得分:1)

awk '{split($0, a, /\\n/)};
         {for (i in a) {sub(/,$/, "", a[i]); print NR","a[i]}}' file.txt

答案 1 :(得分:0)

使用sed和while循环:

a=1
while read line; do
    sed -r "s/(([0-9]+,)+[0-9]+)[^0-9]*/$a,\1\n/g" <<< "$line"
    ((a++))
done < file.csv
1,2,5,6
1,6,3,4
1,7,8,3

2,23,4,1
2,5,5,6
2,2,3,8

答案 2 :(得分:0)

a=1
while read line
do
echo $line|sed 's/\\n/\
'"$a"'/g'>>output.csv
a=`expr $a + 1`
done<filename

在sed的/ \\ n / \

之后手动按回车键