Sed
如何 cat 和 sed 一起使用?
我有這個
cat
然後sed
操作:cat ${location_x}/file_1 > ${location_y}/file2 sed -i "s/0/1/g" /${location_y}/file2
這可以在一行中完成嗎?
我可能會在這裡錯過這種方式,但在我看來,這種解釋似乎是為了處理與此相反的情況,而且我也未能將上述內容統一到一個沒有雙與號 ( ) 或分號 ( ) 的操作
cat
中,並且越來越接近假設這是不可能的,但我在這裡問很重要,因為我可能錯了。sed``&&``;
並非所有說英語的讀者都熟悉“與號”或“分號”這些術語,所以我詳細說明了這些。
是的:
sed 's/0/1/g' "$location_x/file_1" >"$location_y/file2"
您的程式碼首先製作第一個文件的副本,然後使用內聯編輯更改副本
sed -i
。上面的程式碼從原始文件中讀取,進行更改,然後將結果寫入新文件。這裡沒有必要cat
。如果您使用
sed
的是 GNU 並且$location_x
可能包含前導-
,則需要確保該路徑不被解釋為命令行標誌:sed -e 's/0/1/g' -- "$location_x/file_1" >"$location_y/file2"
雙破折號表示命令行選項的結束。另一種方法是使用
<
將文件的內容重定向到sed
. 其他sed
實現(BSDsed
)在第一個非選項參數處停止解析命令行選項,而 GNUsed
(與其他一些 GNU 軟體一樣)在解析命令行時重新排列命令行。對於此特定的編輯操作(將所有零更改為一),以下內容也將起作用:
tr '0' '1' <"$location_x/file_1" >"$location_y/file2"
請注意,
tr
始終從標準輸入讀取,因此<
從原始文件重定向輸入。我注意到在您的
sed
命令行上,您嘗試訪問/${location_y}/file2
,這與它上面一行的路徑(/
路徑開頭的路徑)不同。這可能是一個錯字。