簡體   English   中英

bash 腳本:如何在 .<dot> 對於文件中的每一行

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM