[英]bash scripting: how to move a string before .<dot> for each line in a file
文件包含:
compat-db.x86_64 4.6.21-17.el6
chkconfig.x86_64 1.3.49.5-1.el6
我想在4.6.21-17.el6
之前添加前缀-
并将其移动到.
使用 bash 脚本。
所以输出应该是:
compat-db-4.6.21-17.el6.x86_64
chkconfig-1.3.49.5-1.el6.x86_64
任何建议如何实现这一目标?
awk解决方法:
awk '{ sub(/\./,"-"$2".",$1); print $1 }' file
输出:
compat-db-4.6.21-17.el6.x86_64
chkconfig-1.3.49.5-1.el6.x86_64
GNU-sed 解决方案:
sed 's/\.\(.*\)[[:space:]]\+\(.*\)/-\2.\1/'
\\.
字面上匹配一个点[:space:]
是一个 POSIX 类,在字符类中,它匹配任何空白字符\\+
表示“至少一次”\\(...\\)
用于捕获BSD Sed & GNU 解决方案:
sed -E 's!^([^\s\.]*)(\.[a-Z0-9_^\s]*)[\s]*([^\s]*)[\s]*$!\1-\3\2!g;s! !!g' < yourfile.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.