Sed/Awk 对文本的操纵
Sed/Awk manipulation of a text
我需要更改文件的最后一列:
dir_/agra_2008_04_07_a 6 scd679 Voice of male
dir_/agra_2008_04_07_a 7 scd680 voice off
dir_/agra_2007_10_01_a 2 scd502 voice over
dir_/agra_2007_10_08_a 2 scd502 voice over
致另一位:
dir_/agra_2008_04_07_a 6 scd679 Voice_of_male
dir_/agra_2008_04_07_a 7 scd680 voice_off
dir_/agra_2007_10_01_a 2 scd502 voice_over
dir_/agra_2007_10_08_a 2 scd502 voice_over
在最后一列添加下划线!任何人?谢谢!
一个简单的sed
解决方案:
sed 's/ /_/8g' file
它用下划线替换空格,但忽略前 7 个出现,因此从第 8 个开始到最后 (g
)。如果您的输出在最后一列之前始终具有相同数量的空格,则它会起作用。
只要你有双 space 作为字段分隔符你就可以使用这个 awk
awk -F" " '{gsub(/ /,"_",$NF)}1' OFS=" " file
dir_/agra_2008_04_07_a 6 scd679 Voice_of_male
dir_/agra_2008_04_07_a 7 scd680 voice_off
dir_/agra_2007_10_01_a 2 scd502 voice_over
dir_/agra_2007_10_08_a 2 scd502 voice_over
它将上次提交的 space 替换为 _
我需要更改文件的最后一列:
dir_/agra_2008_04_07_a 6 scd679 Voice of male
dir_/agra_2008_04_07_a 7 scd680 voice off
dir_/agra_2007_10_01_a 2 scd502 voice over
dir_/agra_2007_10_08_a 2 scd502 voice over
致另一位:
dir_/agra_2008_04_07_a 6 scd679 Voice_of_male
dir_/agra_2008_04_07_a 7 scd680 voice_off
dir_/agra_2007_10_01_a 2 scd502 voice_over
dir_/agra_2007_10_08_a 2 scd502 voice_over
在最后一列添加下划线!任何人?谢谢!
一个简单的sed
解决方案:
sed 's/ /_/8g' file
它用下划线替换空格,但忽略前 7 个出现,因此从第 8 个开始到最后 (g
)。如果您的输出在最后一列之前始终具有相同数量的空格,则它会起作用。
只要你有双 space 作为字段分隔符你就可以使用这个 awk
awk -F" " '{gsub(/ /,"_",$NF)}1' OFS=" " file
dir_/agra_2008_04_07_a 6 scd679 Voice_of_male
dir_/agra_2008_04_07_a 7 scd680 voice_off
dir_/agra_2007_10_01_a 2 scd502 voice_over
dir_/agra_2007_10_08_a 2 scd502 voice_over
它将上次提交的 space 替换为 _