国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

sed 原地替換文件時遇到的趣事

這篇具有很好參考價值的文章主要介紹了sed 原地替換文件時遇到的趣事。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

哈嘍大家好,我是咸魚

在文章《三劍客之 sed》中咸魚向大家介紹了文本三劍客中的 sed

sed 全名叫 stream editor,流編輯器,用程序的方式來編輯文本

那么今天咸魚打算講一下我在用 sed 原地替換文件時遇到的趣事

sed 讓文件屬性變了?

有這么一個普通文件 test.txt ,內容如下:

[root@localhost /opt]# cat test.txt 
My name is Ammon
hello world!
hahahahaha

link_test.txt 是一個軟鏈接(Symbolic Link,也可以叫符號鏈接)文件,指向 test.txt 文件
sed 原地替換文件時遇到的趣事

軟鏈接文件類似于 Windows 的快捷方式,它實際上是一個特殊的文件。關于軟鏈接相關的內容這里不過多介紹

如果我們對軟鏈接文件內容進行修改,源文件是會跟著改變的
sed 原地替換文件時遇到的趣事
當我使用 sed 對軟鏈接文件link_test.txt 進行內容修改時,命令如下

[root@localhost /opt]# sed -i 's/Ammon/Edsion/g' link_test.txt 

有趣的現(xiàn)象發(fā)生了:使用 sed 對軟鏈接文件link_test.txt 進行內容修改之后,源文件test.txt內容沒有變化,軟鏈接文件link_test.txt 的內容發(fā)生變化且變成了普通文件

sed 原地替換文件時遇到的趣事
怎么樣,是不是很神奇?sed 不但把文件內容改了,還把文件屬性也給改了

我們用 strace 工具來查看一下在執(zhí)行 sed 命令時操作系統(tǒng)做了哪些操作

strace 一個系統(tǒng)調用跟蹤工具,它會跟蹤并記錄命令運行期間的系統(tǒng)調用和信號

[root@localhost /opt]# strace sed -i 's/Ammon/Edsion/g' link_test.txt > strace.log 2>&1

具體內容有點多,我們著重看下關鍵內容
sed 原地替換文件時遇到的趣事
由上圖可以知道,如果我們使用 sed 對一個文件進行原地替換,需要有一個臨時文件,sed 先把修改內容寫入到這個文件,最后將文件 rename 到原來的地方

那我的需求是對軟鏈接文件 link_test.txt 進行內容修改,軟鏈接文件屬性不變,且源文件的內容也跟著改變,有沒有什么方法呢?

也就是說我們希望命令在執(zhí)行的時候能夠解析出來軟鏈接文件后面指向的源文件,直接對源文件進行讀--處理--寫,最后 rename

sed 命令有一個選項 --follow-symlinks

--follow-symlinks: 
	follow symlinks when processing in place

我們在執(zhí)行的時候加上這個選項:

[root@localhost /opt]# strace sed -i --follow-symlinks 's/Ammon/Edsion/g' link_test.txt > strace.log 2>&1

sed 原地替換文件時遇到的趣事
總結一下:文章來源地址http://www.zghlxwxcb.cn/news/detail-741824.html

  • sed 替換的底層邏輯是把更新后的內容寫入一個臨時文件里面,然后再 rename 這個臨時文件
  • 這樣就會使得如果沒有添加 –follow-symlinks 選項的話,對軟鏈接文件進行 sed 操作就會使得軟鏈文件變成了一個常規(guī)文件(其實是那個臨時文件重命名導致的)
  • 如果要對軟鏈接文件指向的源文件進行操作,就需要添加 –follow-symlinks 選項

到了這里,關于sed 原地替換文件時遇到的趣事的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • sed中使用正則表達式進行替換以及注意事項

    sed中使用正則表達式進行替換的時候,一定要注意,有些特殊字符在使用時要轉義,目前發(fā)現(xiàn)的有: 用于分組的小括號:(),在使用時要用進行轉義,但是匹配字符串中真正的小括號時,無需轉義; 表示前面的表達式出現(xiàn)次數(shù)的{},也要轉義; 表示前面的表達式出現(xiàn)1次或多

    2023年04月22日
    瀏覽(25)
  • Linux CentOS7sed的替換及逆轉功能

    Linux CentOS7sed的替換及逆轉功能

    在各項工作中,需要大量的文本處理。有時,想把文件按行翻轉一下,最后一行顯示在第一行,倒數(shù)第二行顯示在正數(shù)第二行,等等。這是對行的逆轉要求,可以通過命令tac對文件操作,達到目的;有時,想把一行內容按單詞翻轉一下,最后一個單詞顯示第一個位置,倒數(shù)第

    2024年02月10日
    瀏覽(23)
  • 記錄一次最近遇到的新網(wǎng)絡詐騙經(jīng)歷,大家要提高警惕啊

    記錄一次最近遇到的新網(wǎng)絡詐騙經(jīng)歷,大家要提高警惕啊

    第一次接到詐騙電話,說是要求修改支付寶信息的,一開始說的確實是很迷惑人,一下子可能沒法馬上分辨出來,但是到后面說要加QQ操作什么什么的,那肯定就是有嚴重問題的,因為很多詐騙都是通過QQ來操作的,一聽到這個就要警惕了。 他的詐騙流程是這樣的: 先是說你

    2023年04月23日
    瀏覽(38)
  • linux sed命令刪除一行/多行_sed刪除第一行/linux刪除文件某一行

    linux sed命令刪除一行/多行_sed刪除第一行/linux刪除文件某一行

    linux常用命令(9):sed命令(編輯/替換/刪除文本) linux sed命令刪除一行/多行_sed刪除第一行/linux刪除文件某一行 linux sed批量修改替換文件中的內容/sed特殊字符 本文主要講解如何刪除txt文件中的某一行內容,sed命令更多詳細內容參考《linux常用命令(9):sed命令(編輯/替換/刪除文本

    2024年01月21日
    瀏覽(54)
  • shell讀取配置文件-sed命令

    在編寫啟動腳本時,涉及到讀取配置文件,特地記錄下shell腳本讀取啟動文件的方式。主要提供兩種格式的讀取方式,方式一配置文件采用“[]”進行分區(qū),方式二配置文件中需要有唯一的配置項名稱。 配置文件格式如下: # cat -n config.ini 1 #MYSQL配置項 2 [MYSQL] 3 DB_HOST=192.168.

    2023年04月11日
    瀏覽(22)
  • 使用 sed 命令刪除 Linux 文件中的行

    在 Linux 系統(tǒng)中,sed(流編輯器)是一個功能強大的命令行工具,它可以用于對文本文件進行處理和轉換。其中一個常見的用途是刪除文件中的特定行。本文將介紹如何使用 sed 命令刪除文件中的行,并提供相應的源代碼示例。 要使用 sed 命令刪除文件中的行,可以使用以下的

    2024年02月04日
    瀏覽(20)
  • 進一步了解C++函數(shù)的各種參數(shù)以及重載,了解C++部分的內存模型,C++獨特的引用方式,巧妙替換指針,初步了解類與對象。滿滿的知識,希望大家能多多支持

    進一步了解C++函數(shù)的各種參數(shù)以及重載,了解C++部分的內存模型,C++獨特的引用方式,巧妙替換指針,初步了解類與對象。滿滿的知識,希望大家能多多支持

    C++的編程精華,走過路過千萬不要錯過啊!廢話少說,我們直接進入正題?。。。?函數(shù)默認參數(shù) 在C++中,函數(shù)的形參列表中的形參是可以有默認值的。 語法 : 返回值類型 函數(shù)名 (參數(shù) = 默認值){} 示例 : 函數(shù)占位參數(shù) C++中函數(shù)的形參列表里可以有占位參教,用來做占位

    2023年04月17日
    瀏覽(27)
  • 有關 python 切片的趣事

    有關 python 切片的趣事

    哈嘍大家好,我是咸魚 今天來講一個我在實現(xiàn) python 列表切片時遇到的趣事 在正式開始之前,我們先來了解一下 切片(slice) 切片操作是訪問序列(列表、字符串......)中元素的另一種方法,它可以訪問一定范圍內的元素,通過切片操作,可以生成一個新的序列 語法如下

    2024年02月08日
    瀏覽(14)
  • Unity圖片導入趣事隨筆

    Unity圖片導入趣事隨筆

    像這樣的png格式的圖片,直接導入unity時unity會把沒有像素的部分用黑色填充,并根據(jù)填充部分自動生成alpha通道??雌饋韆lpha通道是不能手動覆蓋的,即使在ps中手動添加一個alpha通道,并添加覆蓋值。 導出后也會發(fā)現(xiàn)這沒有任何意義,在unity中查看alpha通道依舊和以前一致。

    2024年01月21日
    瀏覽(22)
  • 常用的 55 個 Linux Shell 腳本(包括基礎案例、文件操作、實用工具、圖形化、sed、gawk)

    1、第一個案例:helloworld 2、打印運行的python進程 3、獲取并打印參數(shù) 4、用腳本寫for循環(huán) 5、使用C語言風格的for命令 6、while循環(huán)案例 7、使用break跳出外部循環(huán) 8、使用continue命令 9、case案例 10、判斷兩個數(shù)是否相等 11、使用雙圓括號 12、使用雙方括號 13、反引號的使用 14、字

    2024年02月07日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包