为每个行shell添加前缀

时间:2015-07-17 08:58:15

标签: bash shell sed

我有一个输入文件

输入:

aaa_bbbbbbbbb
aaaa_bbbbbb
aa_hhhhhh

我需要输出:

aaa_1 aaa_bbbbbbbbb
aaaa_2 aaaa_bbbbbb
aa_3 aa_hhhhhh

即字符直到_然后每一行都有一个行号。

我有这个脚本文件:

#!/bin/bash
file="/export/home/rachit.singla/f1.txt"
while read line
do
   grep $line uniqfiles.txt| sed "s/./$line    /"| sed 's/ /_/' >>./final.txt;
done< "$file"

输出:

aaa_ aaa_bbbbbbbbb
aaaa_ aaaa_bbbbbb
aa_ aa_hhhhhh

如何添加数字?

3 个答案:

答案 0 :(得分:3)

使用awk

更为直接
$ awk -F_ '{print $1""FS""NR, $0}' file
aaa_1 aaa_bbbbbbbbb
aaaa_2 aaaa_bbbbbb
aa_3 aa_hhhhhh

或者,更好一点:

awk -F_ '{printf "%s%s%d %s\n", $1, FS, NR, $0}'

即,将_设置为字段分隔符,然后打印第一个字段,后跟该字段分隔符和行号。然后,一个空格和整行。

答案 1 :(得分:1)

from com.sun.star.text.ControlCharacter import PARAGRAPH_BREAK

注意: text.insertTextContent(cursor, img, False) text.insertControlCharacter(cursor, PARAGRAPH_BREAK, False) cursor.gotoEnd(False) 的-n为行号添加空格,后面跟一个必须删除的标签。

答案 2 :(得分:1)

这是按要求使用sed:

sed = input.txt |  sed 'N;s/\n/ /' | sed 's/^\([0-9]\+\) \(.*\)_/\2_\1 /'