-1

次のデータを含むファイルがあります。

wednesday
Weekday

thursday
Weekday

friday
Weekday

saturday
MaybeNot

sunday
MaybeNot

monday
Weekday

tuesday
Weekday

$:$ファイルが次のように書き換えられるように、各代替行の前に文字列を挿入したいと思います。

wednesday
$:$Weekday

thursday
$:$Weekday

friday
$:$Weekday

saturday
$:$MaybeNot

sunday
$:$MaybeNot

monday
$:$Weekday

tuesday
$:$Weekday

awk/sed を使用してこれを達成するにはどうすればよいですか?

4

6 に答える 6

3

わかった。ここ。

cat << EOF | awk -vRS="" '{print $1 "\n$:$" $2 "\n" }'       
wednesday
Weekday

thursday
Weekday

friday
Weekday

saturday
MaybeNot

sunday
MaybeNot

monday
Weekday

tuesday
Weekday
EOF

与えます...

wednesday
$:$Weekday

thursday
$:$Weekday

friday
$:$Weekday

saturday
$:$MaybeNot

sunday
$:$MaybeNot

monday
$:$Weekday

tuesday
$:$Weekday
于 2013-08-22T06:18:19.883 に答える
1

ファイルが改行で始まらず、質問に示されているように改行がある場合は、次を使用します。

sed -i.bak '2s/^/$.$/;3,${n;n;s/^/$.$/;}' file

ファイルに新しい行がなく、問題のようにすべての代替行の前に置きたい$.$場合:

sed -i.bak 'n;s/^/$.$/' file
于 2013-08-22T07:19:18.060 に答える
0

ssed は perlre を使用するので、perlre を知っていれば簡単です。ターゲット ファイルを変更する場合は、-i を使用します。

cat t|ssed 's/^\([A-Z]\)/$:$&/'

wednesday

$:$Weekday

thursday

$:$Weekday


friday

$:$Weekday

saturday

$:$MaybeNot

sunday

$:$MaybeNot

monday

$:$Weekday

tuesday
$:$Weekday
于 2013-08-22T06:44:00.410 に答える
0

awk を使用 - 変数nは BEGIN パターンで初期化され、必要に応じて の奇数/偶数をテストして行が出力されますn

awk 'BEGIN{n=1}
{
     if (n++ % 2)
       print $0
     else
       print "$:$"$0
}' datafile
于 2013-08-22T06:14:58.550 に答える