我做了一個腳本來檢索源檔案的內容,所以我可以按照我想要的方式創建目標檔案。
我執行了一個“sed”命令,所以我可以用“ PIC S ”來改變“ Numérique ”這個詞。
源檔案 .txt :
MotifRad;CHAR(2);Motif de radiation
MtPrime;Numérique 8.2;Montant prime d'origine
目標檔案 .txt :
* Motif de radiation
05 MotifRad PIC X(2).
* Montant prime d'origine
05 MtPrime PIC S 8.2.
如您所見,我確實更改了“Numérique”一詞,但我想在括號中添加如下數字:PIC S (8.2),我該怎么做?
Bash 腳本:
#!/bin/bash
#Fichier Source
fichier="APGFPOLI.des.txt"
champAdd="05 "
if [[ -f "$fichier" ]]
then
# read it
sed 1d $fichier| sed -i 's/CHAR/PIC X/' $fichier | sed -i 's/Numérique/PIC S/' $fichier | while IFS=';' read -r nomChamp format libelle
do
echo \* $libelle
echo $champAdd $nomChamp $format.
done <"$fichier" > test.txt
fi
uj5u.com熱心網友回復:
$ sed 's/;Numérique[[:space:]]\ \([^;]*\)/;PIC S(\1)/' <<< "MtPrime;Numérique 8.2;Montant prime d'origine"
MtPrime;PIC S(8.2);Montant prime d'origine
或者,使用 GNU sed:
$ sed -E 's/;Numérique\s ([^;]*)/;PIC S(\1)/' <<< "MtPrime;Numérique 8.2;Montant prime d'origine"
MtPrime;PIC S(8.2);Montant prime d'origine
應用于您的檔案:
$ sed -E '/Numérique/s/;Numérique\s ([^;]*)/;PIC S(\1)/' file.txt
MotifRad;CHAR(2);Motif de radiation
MtPrime;PIC S(8.2);Montant prime d'origine
如果要替換CHAR并Numérique在同一運行中:
$ sed -E '/CHAR/s/;CHAR(\([[:digit:]] \));/;PIC X\1/
/Numérique/s/;Numérique\s ([^;]*)/;PIC S(\1)/' file.txt
MotifRad;PIC X(2);Motif de radiation
MtPrime;PIC S(8.2);Montant prime d'origine
uj5u.com熱心網友回復:
我只回答有關替換Numérique [a floating point number]with的部分PIC S [that same floating point number]。
使用捕獲組捕獲浮點數,并使用反向參考將其添加回替換:
cat file
MotifRad;CHAR(2);Motif de radiation
MtPrime;Numérique 8.2;Montant prime d'origine
sed -E 's/Numérique([[:blank:]] [[:digit:].] )/PIC S\1/' file
MotifRad;CHAR(2);Motif de radiation
MtPrime;PIC S 8.2;Montant prime d'origine
如果你想在替換周圍加上括號:
sed -E 's/Numérique([[:blank:]] )([[:digit:].] )/PIC S\1(\2)/' file
MotifRad;CHAR(2);Motif de radiation
MtPrime;PIC S (8.2);Montant prime d'origine
捕獲組用 定義,([thing to capture])對捕獲項的參考是\1, \2,\n最左邊的左括號是最小的數字,依此類推。
例子:
echo 'this;that' | sed -E 's/(.*);(.*)/\2 \1/'
that this
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/382637.html
上一篇:在離線linux服務器上安裝python3和pip3
下一篇:CMake致命錯誤:CMakeFiles/<path>.dir/main.cpp.d:Nosuchfileordirectory
