bash - 文件中的列字符串版本,bash sed awk

标签 bash sed awk

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

0   OS1\admin
1   OS1\test
2   OS3\user
3   OS5\test
4   OS2\test
5   osx\admin

这就是应该改变的方式

0   admin
1   test
2   user
3   test
4   test
5   admin

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

最佳答案

sed

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

awk

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

bash

while read -r x y; do echo $x ${y##*\\}; done <input.txt

关于bash - 文件中的列字符串版本,bash sed awk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10122797/

相关文章:

bash - sed 挤压多次出现的单词

linux - sed 无法处理 bash 脚本中的变量;请求一个文件。简单例子

bash - 在 bash 脚本中使用 .env 属性

perl - 什么脚本可以帮助解析一组错误换行的行?

awk - 如果第二行为空则打印文件名

bash - 阻止 .git/index 更改其权限

linux - 如何替换这样的文字

php - 如果第二列格式不是 sed 的日期,则删除行

shell - awk 语法 — 什么是 OFS?为什么末尾有 1?

unix - 查找与模式匹配的行,前提是它们在指定列中的值在输入文件中恰好出现两次