xargs如何保留文本中的引号

博客介绍了文本中有引号时,直接用xargs管道操作引号会丢失的问题,可使用xargs的-d选项设置换行符为分隔符来保留引号。还给出了将文本参数作为post数据调用web请求的示例,使用cat和xargs结合curl命令。

如果文本中有引号,直接用xargs管道操作的话,引号会丢失,如下

该如何保留每一行文本中的引号呢,需要用到xargs的-d选项,设置一个分隔符,这里可以选用换行符来分割

顺便多来一条,直接将文本参数作为post数据,调用web请求

cat /tmp/bb.txt | xargs -d'\n' -I A curl -X POST -H "Content-Type: application/json" -d 'A' -v -s "http://127.0.0.1/test.php"

要在命令行环境中使用 `xargs` 和 `vim` 来同时编辑多个文档,可以按照以下方法实现。这种方法尤其适合于处理由其他命令(如 `find`)生成的文件列表。 ### 使用 `xargs -0 vim` 打开多个文件 #### 准备阶段 假设有一个场景,您希望通过递归搜索找到某个目录下的所有 `.c` 源码文件,并将这些文件作为参数传递给 `vim` 进行批量编辑。为了防止文件名中包含空格或其他特殊字符造成解析错误,推荐使用 `-print0` 结合 `xargs -0` 的方式[^1]。 ```bash find /path/to/source/directory -type f -name "*.c" -print0 | xargs -0 vim ``` 这条命令的作用是从 `/path/to/source/directory` 开始查找所有的 `.c` 文件,然后把这些文件的名字安全地传送给 `vim` 编辑器。其中: - `find ... -print0` 将结果中的每一项以 NULL 字符分隔; - `xargs -0` 则能够正确解读这种 NULL 分隔的形式,从而避免因空白或引号引起的误解。 #### 注意事项 尽管上述做法非常有效,但也存在一定的局限性和注意事项: 1. **内存消耗**:如果匹配出来的文件数目巨大,可能会因为系统资源不足而失败。 2. **Vim 的缓冲区限制**:某些情况下,Vim 可能无法一次性加载太多文件进入其内部缓冲区。这时可以选择只选取部分重要文件或是改用更适合大规模文本操作的工具[^2]。 此外,如果您只是想简单预览而不是深入修改的话,或许还可以考虑其他的轻量级替代方案比如 `less` 或者专用的代码浏览器软件等。 ```python # Python 示例脚本用于演示如何模拟类似的文件集合构建过程 import subprocess def call_vim_with_files(directory, extension): try: result = subprocess.run(['find', directory, '-type', 'f', '-name', f'*.{extension}', '-print0'], stdout=subprocess.PIPE) if result.returncode == 0: files_to_open = result.stdout.decode().split('\x00')[:-1] if len(files_to_open) > 0: subprocess.call(['xargs', '-0', 'vim'], input='\x00'.join(files_to_open).encode()) else: print("No matching files were found.") else: raise Exception("Error occurred while running find command.") except Exception as e: print(e) call_vim_with_files('/example/path/', 'py') ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值