我在编辑文件中的一列时遇到了棘手的问题。
我的目标是替换第二行中的字符串以摆脱由 \ 符号分隔的部分。
为了清楚起见,这是示例源文件:aaa.txt
0 OS1\管理员 1 OS1\测试 2 OS3\用户 3 OS5\测试 4 OS2\测试 5 操作系统\管理员
那应该怎么改
0 管理员 1 次测试 2个用户 3 测试 4 测试 5 管理员
它让我发疯,请帮助:) Sed / Awk 或纯 bash 将只是 gr8
sed 's/\S*\\//' input.txt
awk '{sub(/[^[:space:]]*\\/, "")}1' input.txt
while read -r x y; do echo $x ${y##*\\}; done <input.txt
如果您想对文件进行内联编辑,可以尝试以下操作。请记住在测试任何内联编辑之前备份您的文件。
sed -i 's/ .*\\/ /g' /yourfile
对于 OS X,您可以尝试以下操作(请记住在测试任何内联编辑之前备份您的文件。)
sed -i '' 's/ .*\\/ /g' /yourfile
您可以捕获第一列,然后删除第二列的第一部分吗?
sed 's/\(.*\t\).*\\/\1/g'
\\(.\*\t\\)
应该捕获第 1 列,.\*\\
应该匹配并包括第 2 列中的 \。然后我们将其替换为\1
,这是我们之前捕获的第 1 列。