sed 相关问题

Sed(Stream EDitor)是POSIX环境的命令行编辑器。 Sed根据编辑脚本处理一个或多个文件,并将结果写入标准输出。它创建于贝尔实验室,自70年代中期以来一直存在。

使用 sed 删除包含主机名的行

我有一个主机名: babuntu10 和 hostanme12 ,我只想从 wy fstab 条目 M 中删除主机名,但 sed 将它们都删除 babuntu10:/根/产品/babuntu10...

回答 1 投票 0

寻找与 sed 替代等效的 awk gsub

我正在使用以下 sed 命令,我想将其传输到 awk 以将日期从 2023-12-15 更改为 15/12/2023: echo "c_az_6332,2023-12-15,-24.01,BP_Connect,详情,详情&qu...

回答 1 投票 0

Sed 消失了

我正在尝试 sed 一个 htpasswd 文件行 测试:$y$j9T$WLGY.14lZu0BzrKsc6DCW.$QVsQJiEjSVhDpmOpUuYYw9/VE7ozGe92Y2FWapPAwK1 当我做 用户=“测试” regexGrep="^$用户" $(猫./.htpassw...

回答 1 投票 0

SED 挑战 - 根据条件添加线路

“sed”让我头疼,所以我在这里发布这个问题。是的,它应该使用 sed 完成,在脚本中执行。 这个想法是改变一个由大约 30 个块组成的文本文件

回答 1 投票 0

打印procmail中的变量

我有一个 Procmail 配方来过滤传入的邮件,如下所示: :0 *^主题:.*(测试) *? egrep -is -f /root/Procmail/whitelist.txt { :0 前线 |格式-I“” :...

回答 1 投票 0

用于解析 .env 文件的 Bash 命令包含等号 (=) 值

我有一个 .env 文件, # 一些变量 用户名=用户1 密码= # 其他变量 网址=https://example.com 令牌=muDm8qJ6mqM__YX024dk1RXluPnwd-3mxyt1LwLoI4ISiVPA== 目的 我的目的是创造...

回答 4 投票 0

高效/安全的shell脚本从分隔的分割字符串中删除所有子字符串匹配?

对于由分隔符“:”分割的字符串,匹配分隔符之间包含不同字符串“XXX”的所有子字符串的最佳方式是什么。 例如,首先 /aa...

回答 3 投票 0

如何用 ASCII 替换 Unicode 字符

我有以下命令将 Unicode 字符替换为 ASCII 字符。 sed -i 's/à/A/g' 问题是我的 Unix 环境中的 sed 命令无法识别 à,所以我假设您将其替换掉

回答 4 投票 0

终端 SED 正则表达式因破折号和斜杠而失败

我尝试转换文件名并删除特殊字符和空格。 由于某些原因,如果我声明不替换破折号和斜杠,我的 SED 正则表达式将不起作用。 输入:/path/to/file 20-456 (1).jpg

回答 2 投票 0

使用 Linux 命令行提取单词

我有一个语料库文件,我需要将其与另一个文件“垂直”进行比较并列出唯一的剩余字符串。例如: 排除.txt: 编辑 s 英 第二个文件是: 语料库.txt: 工作过

回答 1 投票 0

多行匹配:提取单独的行

我有类似的命令输出 变量=“”“ 名字= 键1=值1 键2=值2 键3=值3 键4=值4 名字= 键1=值1 key2=val2 key3=v...

回答 1 投票 0

当 sed 以“视觉上明确”的形式打印时如何修剪尾部 $?

我想逐字列出转义字符。 受到这个答案的启发: printf ' [m$123' | '[m$123'] sed --安静 l [m$123$ # 输出:失败 但我想得到ri...

回答 1 投票 0

尝试从 UNIX 文件中删除不可打印的字符(垃圾值)

我正在尝试从文件中的记录中删除不可打印的字符(例如 ^@)。由于文件中的记录量太大,因此使用 cat 不是一个选项,因为循环占用了太多时间...

回答 4 投票 0

如何从 shell 中的文本文件中选取随机唯一行?

我有一个行数未知的文本文件。我需要随机抓取其中一些行,但我不希望有任何重复的风险。 我试过这个: 点-r 3 1 `wc -l 我有一个行数未知的文本文件。我需要随机抓取其中一些行,但我不希望有任何重复的风险。 我试过这个: jot -r 3 1 `wc -l<input.txt` | while read n; do awk -v n=$n 'NR==n' input.txt done 但这很丑陋,并且不能防止重复。 我也尝试过这个: awk -vmax=3 'rand() > 0.5 {print;count++} count>max {exit}' input.txt 但这显然也不是正确的方法,因为我什至不能保证得到 max 线。 我被困住了。我该怎么做? 这可能对你有用: shuf -n3 file shuf 是 GNU coreutils 之一。 如果您可以使用 Python(将 10 更改为您想要的): python -c 'import random, sys; print("".join(random.sample(sys.stdin.readlines(), 10)).rstrip("\n"))' < input.txt (这适用于 Python 2.x 和 3.x。) 另外,(再次将 10 更改为适当的值): sort -R input.txt | head -10 如果您的系统上有 jot,那么我猜您正在运行 FreeBSD 或 OSX 而不是 Linux,因此您可能没有 rl 或 sort -R 等可用工具。 不用担心。不久前我不得不这样做。试试这个: $ printf 'one\ntwo\nthree\nfour\nfive\n' > input.txt $ cat rndlines #!/bin/sh # default to 3 lines of output lines="${1:-3}" # default to "input.txt" as input file input="${2:-input.txt}" # First, put a random number at the beginning of each line. while read line; do printf '%8d%s\n' $(jot -r 1 1 99999999) "$line" done < "$input" | sort -n | # Next, sort by the random number. sed 's/^.\{8\}//' | # Last, remove the number from the start of each line. head -n "$lines" # Show our output $ ./rndlines input.txt two one five $ ./rndlines input.txt four two three $ 这是一个 1 行示例,还使用 awk 更干净地插入随机数: $ printf 'one\ntwo\nthree\nfour\nfive\n' | awk 'BEGIN{srand()} {printf("%8d%s\n", rand()*10000000, $0)}' | sort -n | head -n 3 | cut -c9- 请注意,不同版本的 sed(在 FreeBSD 和 OSX 中)可能需要 -E 选项而不是 -r 来处理正则表达式中的 ERE 或 BRE 方言,如果你想明确地使用它,尽管我的一切我们已经在 BRE 中测试了转义边界的工作情况。 (旧版本的 sed(HP/UX 等)可能不支持此表示法,但只有当您已经知道如何执行此操作时,您才会使用这些表示法。) 这应该可以解决问题,至少使用 bash 并假设您的环境有其他可用命令: cat chk.c | while read x; do echo $RANDOM:$x done | sort -t: -k1 -n | tail -10 | sed 's/^[0-9]*://' 它基本上输出你的文件,在每行的开头放置一个随机数。 然后它对该数字进行排序,抓取最后 10 行,并从中删除该数字。 因此,它会从文件中为您提供十个随机行,没有重复。 例如,这是使用该 chk.c 文件运行 3 次的记录: ==== pax$ testprog chk.c } else { } newNode->next = NULL; colm++; ==== pax$ testprog chk.c } arg++; printf (" [%s] n", currNode->value); free (tempNode->value); ==== pax$ testprog chk.c char tagBuff[101]; } return ERR_OTHER; #define ERR_MEM 1 === pax$ _ sort -Ru filename | head -5 将确保没有重复。并非所有 sort 的实现都有 -R 选项。 要使用 Perl 从 N 获取 FILE 随机行: perl -MList::Util=shuffle -e 'print shuffle <>' FILE | head -N 如果您不想安装其他任何东西,这里有一个使用 ruby 的答案: cat filename | ruby -e 'puts ARGF.read.split("\n").uniq.shuffle.join("\n")' 例如,给定一个如下所示的文件 (dups.txt): 1 2 1 3 2 1 2 3 4 1 3 5 6 6 7 您可能会得到以下输出(或一些排列): cat dups.txt| ruby -e 'puts ARGF.read.split("\n").uniq.shuffle.join("\n")' 4 6 5 1 2 2 3 7 1 3 评论中的进一步示例: printf 'test\ntest1\ntest2\n' | ruby -e 'puts ARGF.read.split("\n").uniq.shuffle.join("\n")' test1 test test2 当然,如果您的文件包含重复的测试行,您只会得到一行: printf 'test\ntest\ntest\n' | ruby -e 'puts ARGF.read.split("\n").uniq.shuffle.join("\n")' test 虽然我很欣赏 OP 在 FreeBSD 上的表现,并且我不确定这是否适用于他们的系统,但是 PowerShell 可能是一个有用且干净的替代方案? Get-Content "path/to/file" | Get-Random PowerShell 默认在 Windows 上可用,但也可安装在 Linux 和 macOS 上

回答 8 投票 0

使用 sed 和 mv 重命名文件

我想重命名以下格式的文件: img_MM-DD-YY_XX.jpg img_MM-DD-YY_XXX.jpg 到: newyears_YYYY-MM-DD_XXX.jpg 在哪里: YYYY = 年 MM = 月份 DD = 日 XXX 或 XX = 照片编号 我...

回答 8 投票 0

在新环境中使用unicode范围的sed表达式出现问题

我在几年前编写的 bash clean 脚本中有以下 sed 范围替换表达式,它在旧环境中工作(或至少从未给出错误),但在 n...

回答 1 投票 0

将所有文件中的特定文本替换为 Linux 中其自身文件名中的文本

美好的一天! 我在 Ubuntu 中有这样的文件: ZAF_MM_CYCLE_K051.XLS ZAF_MM_CYCLE_K052.XLS ZAF_MM_CYCLE_K053.XLS 这是文件“ZAF_MM_CYCLE_K036”的副本,文件的代码是K036 文件续...

回答 2 投票 0

合并双引号中的多行单元格

我有这个 tsv(制表符分隔)文件,有 2 列。 第一列是单个(或一组)单词,第二列是它的含义。 测试文件 测试尝试 测试“一个简短的测试来衡量

回答 1 投票 0

使用 sed 删除双引号字符串中的逗号

我有一个字符串: 1,2,3,"测试1,测试2,测试3",4,5,6 从中,我需要得到一个双引号内没有逗号的输出,如下所示: 1,2,3,"测试1测试2测试3",4,5,6 我试过了...

回答 2 投票 0

SED 命令 - 替换 JSON 文件中的键和值对 - 键名称类似于所有数组对象[重复]

目标替换 - "text": "V01_08_17", with "text": "Customized String", 在下面的 json 文件中使用 sed File.json 如上所述 { “类型”:“

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.