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