Files

修改文件而不創建另一個文件

  • April 13, 2016

有沒有辦法修改文件而不將內容寫入另一個文件,沒有sedand awk

例如:

$ cat test.txt
aaa
aaa
bbb
ccc
ddd

sed-i選項替換使用,sed -i 's/aaa/NNN/g' test.txt將產生以下結果:

NNN
NNN
bbb
ccc
ddd

沒有awkand怎麼辦sed

您可以使用vi腳本:

$ vi test.txt -c '%s/aaa/NNN/ | wq'
$ cat test.txt
NNN
NNN
bbb
ccc
ddd

您只是自動化vi在命令模式下使用時通常輸入的內容(Esc``:通常使用訪問):

%- 在每一行執行以下命令:

s/aaa/NNN/-aaa替換為NNN

|- 命令分隔符

w- 將更改寫入文件

q- 辭職

使用海綿

#!/bin/bash

pattern='aaa'
replacement='NNN'

while read -r line
do                                                                              
 printf '%s\n' "${line//$pattern/$replacement}"
done < "${1}"

致電:

./script.sh test.txt | sponge test.txt

引用自:https://unix.stackexchange.com/questions/166064