簡體   English   中英

將文件中的鍵/值從unix提取到另一個文件

[英]Extract Key/value from file to another file in unix

您好我已經使用此代碼從文件中提取鍵/值到另一個文件

BugReports: https://r-forge.r-project.org/tracker/?group_id=194
NeedsCompilation: no
Repository: CRAN
Date/Publication: 2014-03-02 12:40:42" > FichierTest


IFS=":" 
echo $(while read f1 f2
do 
   echo "$f1 ; $f2" 
done < FichierTest) > test.dsc

test.dsc的內容:

BugReports ;  https //r-forge.r-project.org/tracker/?group_id=194
NeedsCompilation ;  no
Repository ;  CRAN
Date/Publication ;  2014-03-02 12 40 42

我只想將第一個冒號“:”更改為分號“;” 在每一行

非常感謝

為什么不與sed一次性匹配?

sed -e 's|:|;|' file

輸出:

BugReports; https://r-forge.r-project.org/tracker/?group_id=194
NeedsCompilation; no
Repository; CRAN
Date/Publication; 2014-03-02 12:40:42

或者,如果你真的想要替換一切:

sed -e 's|:|;|g' file

輸出:

BugReports; https;//r-forge.r-project.org/tracker/?group_id=194
NeedsCompilation; no
Repository; CRAN
Date/Publication; 2014-03-02 12;40;42

如果需要,添加空格以替換。

順便說一下,你的輸出在某些部分得到空格而不是冒號的原因是因為IFS仍然對單詞拆分有影響。 您必須在其上引用命令替換來修復它:

IFS=":" 
echo "$(while read f1 f2
do 
   echo "$f1 ; $f2" 
done < FichierTest)"

輸出:

BugReports ;  https://r-forge.r-project.org/tracker/?group_id=194
NeedsCompilation ;  no
Repository ;  CRAN
Date/Publication ;  2014-03-02 12:40:42

實際上這樣做的正確方法是:

while IFS=: read -r f1 f2; do 
   echo "$f1 ; $f2" 
done < FichierTest

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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