4

このtxtファイルがあるように、指定した番号行の先頭と末尾にテキストを挿入したいと思います:

apple
banana
orange
pineapple

最初の行の最初と最後に挿入するには、次を使用します。

while read -r line
do
sed "1i[text_insert]$line" > outputfile1
done < inputfile

while read -r line
do
sed "1i$line[text_insert2]" > outputfile2
done < outputfile1

そして私は得る:

[text_insert]apple[text_insert2]
banana
orange
pineapple

そして今、行番号2にテキストを追加したいと思います:

[text_insert]apple[text_insert2]
[text_insert3]banana[text_insert4]
orange
pineapple

私は同じことを使用しようとしましたが、それは機能しません。私が見つけた他のすべての可能性は、指定された行の前に改行のようなテキストを挿入し、指定された行に追加しないことです。

4

4 に答える 4

1

awk:

$ line=3
$ awk -v num=$line 'NR==num{$0="[Insert New Text] " $0 " [Insert End Text]"}1' file
apple
banana
[Insert New Text] orange [Insert End Text]
pineapple
于 2013-06-15T03:24:29.340 に答える
0

awk組み込みの NR 変数で必要なことを達成するために使用できます。例えば:

#!/usr/bin/awk -f
{
    if (NR == 1)
        printf("[text_insert] %s [text_insert2]\n", $0)
    else if (NR == 2)
        printf("[text_insert3] %s [text_insert4]\n", $0)
    else
        print $0
}
于 2013-06-14T23:47:52.273 に答える