标签: replace

使用 sed 命令后保存文件

我正在使用以下命令替换yyyymmddYYYYMMDDHH24MISS我的文件中:

sed -e 's/\('yyyymmdd'\)/\('YYYYMMDDHH24MISS'\)/g' filename
Run Code Online (Sandbox Code Playgroud)

在 PuTTY 中运行该命令后,它会显示带有替换值的文件,但它们不会反映我是否是more该文件。

我尝试使用-i,但它说

sed: illegal option -- i
Run Code Online (Sandbox Code Playgroud)

有人可以建议我如何替换多个文件中的给定代码并保存它们吗?

sed replace files

7
推荐指数
1
解决办法
2万
查看次数

Btrfs RAID1:如何更换物理上不再存在的磁盘驱动器?

我有一个 btrfs RAID1 系统,其状态如下:

# btrfs filesystem show
Label: none  uuid: 975bdbb3-9a9c-4a72-ad67-6cda545fda5e
        Total devices 2 FS bytes used 1.65TiB
        devid    1 size 1.82TiB used 1.77TiB path /dev/sde1
        *** Some devices missing
Run Code Online (Sandbox Code Playgroud)

丢失的设备是一个完全失败的磁盘驱动器,操作系统无法再识别它。我取出了故障磁盘并将其送去回收。

现在我在 /dev/sdd 下安装了一个新磁盘。在网上搜索时,我找不到这种情况的说明(搜索词选择不当?)。有许多示例如何在故障磁盘仍然可以被操作系统访问时保存 RAID 系统。 btrfs replace命令需要源磁盘。

我尝试了以下方法:

# btrfs replace start 2 /dev/sdd /mnt/brtfs-raid1-b
# btrfs replace status /mnt/brtfs-raid1-b
Never started
Run Code Online (Sandbox Code Playgroud)

没有错误消息,但状态表明它从未启动。我无法弄清楚我的尝试有什么问题。

我正在运行 Ubuntu 16.04 LTS Xenial Xerus,Linux 内核 4.4.0-57-generic。

更新 #1

好的,在“非后台模式(-B)”下运行命令时,我看到了一个以前没有出现过的错误:

# btrfs replace start -B 2 /dev/sdd /mnt/brtfs-raid1-b                                                                                                                     
ERROR: ioctl(DEV_REPLACE_START) failed on "/mnt/brtfs-raid1-b": …
Run Code Online (Sandbox Code Playgroud)

btrfs replace raid1 disk

7
推荐指数
2
解决办法
9872
查看次数

是否可以使用 tr 用一个字符替换一个字符的重复项

我正在尝试获取所有出现的 #,如果它们是连续的,则只用一个 # 替换它们。

例如

 ab ### cde fghi## jklm
Run Code Online (Sandbox Code Playgroud)

会成为:

ab # cde, fghi# jklm
Run Code Online (Sandbox Code Playgroud)

我最初的目标是用 # so 替换所有连续的数字;120 -> # 和 3->#。但是我发现 120->###。所以现在我留下了这个新问题。

linux text-processing replace tr

7
推荐指数
1
解决办法
375
查看次数

使用jq,如何替换特定键的值?

如何替换xxxyyy

{
    "spec": {
        "template": {
            "spec": {
                "containers": [{
                    "args": [
                        "proxy",
                        "router",
                        "--domain",
                        "$(POD_NAMESPACE).svc.cluster.local",
                        "--proxyLogLevel=warning",
                        "--proxyComponentLogLevel=misc:error",
                        "--log_output_level=default:info",
                        "--serviceCluster",
                        "istio-ingressgateway"
                    ],
                    "env": [{
                            "name": "JWT_POLICY",
                            "value": "third-party-jwt"
                        },
                        {
                            "name": "ISTIO_META_OWNER",
                            "value": "kubernetes://apis/apps/v1/namespaces/istio-system/deployments/xxx"
                        }
                    ]
                }]
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

replace json jq

7
推荐指数
1
解决办法
1万
查看次数

在vim中的一行上进行条件搜索和替换?

假设我想评论和取消注释一行。

我知道我可以

:s!^!//!
Run Code Online (Sandbox Code Playgroud)

进而

:s!^//!!
Run Code Online (Sandbox Code Playgroud)

现在如果我想把它作为单线怎么办?

基本上,如果一行开始,//则删除它,否则添加它。

我想将此命令映射到一个快捷方式而不是两个。

vim search replace

6
推荐指数
1
解决办法
1762
查看次数

用我在 vi 缓冲区中的行替换一行

ccdd将一行复制到我的粘贴缓冲区中。然后我去一个新的位置。

我想替换我看到的一行。所以我输入p Down dd.

有没有更简单的方法(更少的击键)?

vi replace

6
推荐指数
1
解决办法
191
查看次数

使用 sed 查找整个单词并替换

我在文件中有以下文本块:

test3.legacy test4.legacy test3 test3.kami
Run Code Online (Sandbox Code Playgroud)

我只想test3作为一个整体搜索并用空替换它。不幸的是,我所有的尝试都从和 中删除了test3。我试过了:test3.legacytest3.kami

sed 's/^test3://g' myfile.txt
sed 's/\btest3\b//g' myfile.txt
sed 's/\<test3\>//g' myfile.txt
Run Code Online (Sandbox Code Playgroud)

没有任何运气。有什么想法可以解决这个问题吗?

编辑:大多数尝试导致以下结果:.legacy test4.legacy .kami

command-line sed replace

6
推荐指数
1
解决办法
2万
查看次数

当字符串中有“http://”时,sed 如何替换?

我有一个包含xx以下内容的文件:

@base_url = "http://dmstaffing-stage.herokuapp.com/"
Run Code Online (Sandbox Code Playgroud)

我想用 sed 来消除这一行(什么都不用替换)。我已经成功地将这种 sed 技术与其他几行一起使用,例如

sed -i 's/require "selenium-webdriver"//' xx
Run Code Online (Sandbox Code Playgroud)

但是我对 @base_url 行的尝试不起作用。我怀疑 http:// 中的 " 或 // 弄乱了它,但我似乎无法修复!

我试过了:

$ sed  's/@base_url = "http://dmstaffing-stage.herokuapp.com/"//' xx
sed: -e expression #1, char 23: unknown option to `s'

$ sed  's/@base_url = \"http://dmstaffing-stage.herokuapp.com/\"//' xx
sed: -e expression #1, char 24: unknown option to `s'

$ sed  's/@base_url = "http:\/\/dmstaffing-stage.herokuapp.com/"//' xx
sed: -e expression #1, char 58: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)

但没有一个工作。

shell bash sed shell-script replace

6
推荐指数
1
解决办法
1961
查看次数

我可以在 btrfs 替换期间重新启动然后恢复它吗?

我的硬盘已损坏并出现很多读取错误。我目前正在进行 btrfs 替换,但 24 小时后完成率刚刚超过 5%,这是一个问题:这是我的工作计算机;这是我的工作计算机;我目前已启动到 Live USB,但我需要返回到现有的 Ubuntu 才能继续我的工作(由于所有读取错误,启动非常困难,但有时能够成功)。

注意:整个硬盘,或者至少是它的这个分区,当前的读取速度约为 500 KBps,即使没有读取错误 -btrfs replace status当前报告 0 个读取错误。

所以我有两个选择:1)关闭,重新启动到其他操作系统,然后尝试运行btrfs replace start我第一次运行的相同命令。2)取消当前的替换操作,这可能需要很长时间(我之前已经尝试过取消,替换一分钟后,似乎需要同样长的时间才能取消)并且会撤销一天来之不易的传输进度。3) 承认失败,在接下来的 2-3 周内适应这个 LiveUSB 操作系统,并祈祷清洁人员不要碰撞 U 盘。

btrfs replace

6
推荐指数
1
解决办法
2587
查看次数

zmv:替换文件名中的双引号(“)

在 macOS 上使用 zmv,我想用下划线 (_) 替换文件名中的双引号 (")。但是,我无法让 zshexpn 正确隔离 ". 我应该使用一些神奇的 zsh/zmv/zshexpn 选项吗?

% zmv -n '(**/)(*)' '$1${(S)2//"/_}'
zmv: syntax error in replacement
% zmv -n '(**/)(*)' '$1${(S)2//\"/_}'
zmv: syntax error in replacement`
% zmv -n '(**/)(*)' '$1${(Sp)2//\"/_}'
zmv: syntax error in replacement
Run Code Online (Sandbox Code Playgroud)

(这是更大的替换非法字符活动的一部分。我希望使用一个 zmv 表达式来完成整个事情。)

感谢您的任何帮助。

zsh rename replace

6
推荐指数
1
解决办法
329
查看次数

标签 统计

replace ×10

sed ×3

btrfs ×2

bash ×1

command-line ×1

disk ×1

files ×1

jq ×1

json ×1

linux ×1

raid1 ×1

rename ×1

search ×1

shell ×1

shell-script ×1

text-processing ×1

tr ×1

vi ×1

vim ×1

zsh ×1