2

我在编辑文件中的一列时遇到了棘手的问题。
我的目标是替换第二行中的字符串以摆脱由 \ 符号分隔的部分。
为了清楚起见,这是示例源文件:aaa.txt

0 OS1\管理员
1 OS1\测试
2 OS3\用户
3 OS5\测试
4 OS2\测试
5 操作系统\管理员

那应该怎么改

0 管理员
1 次测试
2个用户
3 测试
4 测试
5 管理员

它让我发疯,请帮助:) Sed / Awk 或纯 bash 将只是 gr8

4

3 回答 3

2

sed

sed 's/\S*\\//' input.txt

awk

awk '{sub(/[^[:space:]]*\\/, "")}1' input.txt

重击

while read -r x y; do echo $x ${y##*\\}; done <input.txt
于 2012-04-12T11:44:58.570 回答
0

如果您想对文件进行内联编辑,可以尝试以下操作。请记住在测试任何内联编辑之前备份您的文件。

sed -i 's/   .*\\/   /g' /yourfile

对于 OS X,您可以尝试以下操作(请记住在测试任何内联编辑之前备份您的文件。)

sed -i '' 's/   .*\\/   /g' /yourfile
于 2012-04-18T21:08:36.250 回答
0

您可以捕获第一列,然后删除第二列的第一部分吗?

sed 's/\(.*\t\).*\\/\1/g'

\\(.\*\t\\)应该捕获第 1 列,.\*\\应该匹配并包括第 2 列中的 \。然后我们将其替换为\1,这是我们之前捕获的第 1 列。

于 2012-04-12T11:40:55.387 回答