reference:
https://www.cnblogs.com/starof/p/4181985.html
抓取目錄名並修改
ls | grep "XXX" > 1.txt
sed命令下批量替換文件內容
格式: sed -i "s/查找字段/替換字段/g" `grep 查找字段 -rl 路徑` 文件名
-i 表示inplace edit,就地修改文件
-r 表示搜索子目錄
-l 表示輸出匹配的文件名
s表示替換,d表示刪除
示例:sed -i "s/shan/hua/g" lishan.txt
把當前目錄下lishan.txt里的shan都替換為hua
sed的其他用法如下:
1、刪除行首空格
sed 's/^[ ]*//g' filename
sed 's/^ *//g' filename
sed 's/^[[:space:]]*//g' filename
2、行后和行前添加新行
行后:sed 's/pattern/&\n/g' filename
行前:sed 's/pattern/\n&/g' filename
&代表pattern
3、使用變量替換(使用雙引號)
sed -e "s/$var1/$var2/g" filename
4、在第一行前插入文本
sed -i '1 i\插入字符串' filename
5、在最后一行插入
sed -i '$ a\插入字符串' filename
6、在匹配行前插入
sed -i '/pattern/ i "插入字符串"' filename
7、在匹配行后插入
sed -i '/pattern/ a "插入字符串"' filename
8、刪除文本中空行和空格組成的行以及#號注釋的行
grep -v ^# filename | sed /^[[:space:]]*$/d | sed /^$/d
1、刪除文檔的第一行
sed -i '1d' <file>
2、刪除文檔的最后一行
sed -i '$d' <file>
3、在文檔指定行中增加一行
例如文檔如下:
echo "1";
echo "2";
echo "4";
echo "5";
想要在echo "2";后面加上一條echo "3";可以用如下命令
sed -i '/echo "2";/aecho "3";' <file>
之所以用分號,是因為文本中本來就有,也就是說分號不是必須的.
抽象出來就是: sed -i '/* /a*' <file>
4、刪除文件中的第k行,例如k=3
sed -i '3d' <file>
5、刪除文件中包含某個關鍵字開頭的所有行
sed -i '/^QWQ/d' <file>
6、刪除文件中包含某個關鍵字的所有行
sed -i '/QWQ/d' <file>