簡體   English   中英

使用sed / awk編輯文件

[英]Edit a file using sed/awk

我有一個包含以下數據的文件:

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實現此目的?

好。 這里。

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

如果您的文件不是以換行符開頭,而是包含問題所顯示的換行符,請使用:

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

如果file沒有新行,並且您要在有問題的狀態下$.$放在每行后面:

sed -i.bak 'n;s/^/$.$/' file

要在第2行開始的每第3行前加上$:$ ,請使用GNU sed:

sed -i '2~3s/^/$:$/' infile

請注意,這將覆蓋infile因此請小心。

使用awk-將變量n初始化為BEGIN模式,然后根據需要通過測試n的奇/均勻性來打印行。

awk 'BEGIN{n=1}
{
     if (n++ % 2)
       print $0
     else
       print "$:$"$0
}' datafile

ssed使用perlre,因此,如果您知道perlre,就很簡單。 如果要修改目標文件,請使用-i。

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

wednesday

$:$Weekday

thursday

$:$Weekday


friday

$:$Weekday

saturday

$:$MaybeNot

sunday

$:$MaybeNot

monday

$:$Weekday

tuesday
$:$Weekday
awk '/^[[:upper:]]/ {$0="$:$"$0}1' file

在文件中替換

awk '/^[[:upper:]]/ {$0="$:$"$0}1' file > tmp ; mv tmp file

編輯另一個版本(這需要格式始終保持一致):

awk 'NR%3==2 {$0="$:$"$0} 1' file

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM