[英]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.