我有一個文件,其中包含下面的表單中的數據。如何刪除具有匹配模式的整行只存在於列範圍75至104
507425B30 171013D248900022 4057-ACCR PROPERTY TAX
00000000257910+00000000000000+00000000257910+00000000000000+00000000000000+
507425B30 171013C249999092 1071-DO NOT USE
00000000000000+00000000000000+00000000000000+00000000031940+00000000000000+
現在我不得不刪除包含了像 00000000000000 + 00000000000000 +和棘手的部分圖案的線條是我們要刪除 只行了,當談到在第一次發生。將會出現 這樣的場景,就像上面的第一條記錄,最後一個記錄出現,並且 不應該從文件中刪除該行。我嘗試過使用下面的命令 ,但它在最後發現該模式不應該是這種情況時刪除該行。
sed '/00000000000000+00000000000000+/d' file
我寫下面的代碼來解決這個問題。但它似乎正在進入無限循環。你能幫我解決問題嗎?
while read line
do
x=`cat $Line | cut -c 75-104`
echo $x
if [ $x -eq "00000000000000+00000000000000+" ]
then
sed '/00000000000000+00000000000000+/d' $File > File.dat
fi
done < $File
在正則表達式,我們使用''^表示,我們正在尋找的字符序列存在於行的開頭,所以'sed的「/^00000000000000 \ 000000億\ +/d」文件'應(我也逃過了那些加號,因爲那些是正則表達式中的控制字符 – JNevill
它不會刪除任何內容,輸出文件與運行該命令後的輸入文件相同 –
sed輸出到stdout如果你想文件本身受到你需要使用'-i'標誌進行「編輯」的刪除操作:'sed -i'/^00000000000000 \ + 00000000000000 \ +/d'文件' – JNevill