文件包含:
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
有任何建议如何实现这一目标?
答案 0 :(得分:1)
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
答案 1 :(得分:0)
GNU-sed解决方案:
sed 's/\.\(.*\)[[:space:]]\+\(.*\)/-\2.\1/'
\.
按字面匹配[:space:]
是一个POSIX类,在字符类中,它匹配任何空格字符\+
表示“至少一次”\(...\)
用于捕获答案 2 :(得分:0)
BSD Sed& GNU解决方案:
sed -E 's!^([^\s\.]*)(\.[a-Z0-9_^\s]*)[\s]*([^\s]*)[\s]*$!\1-\3\2!g;s! !!g' < yourfile.txt