3、文本替代
(1)将每一行前导的空白字符(空格、制表符)删除,使之左对齐。
>> cat num3.txt
>> blank and tab
12345678
12345678
12345
>> sed 's/^[ \t]*//' num3.txt 或 awk '{sub(/^[ \t]*/,"");print $0}' num3.txt
>> blank and tab
12345678
12345678
12345
(2)将每一行拖尾的空白字符(空格、制表符)删除。
>> sed 's/[ \t]*$//' num3.txt 或 awk '{sub(/[ \t]+$/,"");print $0}' num3.txt
(3)将每一行的前导和拖尾的空白字符(空格、制表符)都删除。
>> sed 's/^[ \t]*//;s/[ \t]*$//' num3.txt 或 awk '{sub(/^[ \t]+/,"");sub(/[ \t]+$/,"");print $0}' num3.txt
(4)在每一行开头处插入5个空格。
>> sed 's/^/ /' num.txt 或 awk '{printf(" %s\n",$0)}' num.txt
>> 11 1
11 111
12 123
1 23
(5)在每一行中查找字符串foo,并将找到的foo替换为bar。
>> cat num4.txt
>> footestthefoofoois
justatestfool123
cool
>> sed 's/foo/bar/g' num4.txt 或 awk '{gsub(/foo/,"bar");print}' num4.txt
>> bartestthebarbaris
justatestbarl123
cool
(6)只在行中出现字符just情况下,将foo替换为bar。
>> sed '/just/s/foo/bar/g' num4.txt 或 awk '{if(/just/)gsub(/foo/,"bar");print}' num4.txt
>> footestthefoofoois
justatestbarl123
cool
(7)只在行中未出现字符just情况下,将foo替换为bar。
>> sed '/just/!s/foo/bar/g' num4.txt 或 awk '{if(!/just/)gsub(/foo/,"bar");print}' num4.txt
>> bartestthebarbaris
justatestfool123
cool
(8)将文件中foo和coo都替换成bar。
>> sed 's/foo/bar/g;s/coo/bar/g' num4.txt 或 awk '{gsub(/foo|coo/,"bar");print}' num4.txt
>> bartestthebarbaris
justatestbarl123
barl
(9)将每两行连接成一行。
>> cat num4.txt
>> footestthefoofoois
justatestfool123
cool
catgpwedffa
dfe123
>> sed '$!N;s/\n//' num4.txt 或 awk '{f=!f;if(f)printf("%s",$0);else printf(" %s\n",$0)}' num4.txt
>> footestthefoofooisjustatestfool123
coolcatgpwedffa
dfe123
(10)如果当前行以等号开头,将当前行并到上一行末尾,并以空格代替原来行头的等号。
>> cat num6.txt
>>12345
dafa+=wer=
=sdfsrwer
=dfsfwerwer
2we123erfdc
>> sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D' num6.txt 或 awk '{if(/^=/)printf(" %s",substr($0,2));else printf("%s%s",a,$0);a="\n"}END{printf("\n")}' num6.txt
>>12345
dafa+=wer= sdfsrwer dfsfwerwer
2we123erfdc
(11)为数字字符串增加逗号分隔符号,将“1234567”改为“1,234,567”.
>> cat num7.txt
>> 1234567890
09876421hkjkjlkk;l;
fgsgsg
>> sed -e:a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta' num7.txt 或 awk '{while(match($0,/[0-9][0-9][0-9][0-9]+/)){$0=sprintf("%s,%s",substr($0,0,RSTART+RLENGTH-4),substr($0,RSTART+RLENGTH-3))}print $0}' num7.txt
>> 1,234,567,890
09,876,421hkjkjlkk;l;
fgsgsg
(12)在每5行后增加一行空白行。
>> cat num2.txt
>> 134
regex123
234
345regex
3456
1234
12345
123456
1234565
1234543
12
>> sed 'n;n;n;n;G' num2.txt 或 awk '{print $0;i++;if(i==5){printf("\n");i=0}}' num2.txt
>> 1234
regex123
234
345regex
3456
1234
12345
123456
1234565
1234543
12