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