regex - 使用 SED 交换 bash 中的列而不使用循环

标签 regex linux sed

我是 Sed 新手,我正在尝试使用 Sed 学习一些模式。 我得到了一个 filenamne.txt,其中包含以下条目:

ppp/jjj qqq/kkk rrr/lll

我的目标是在三个 word1/word2 列中交换斜杠之前的单词和斜杠之后的单词:

jjj/ppp kkk/qqq lll/rrr

我尝试使用sed –re ‘s!(.*)(/)(.*)!\1\2\!' filename.txt,但没有成功。知道我该怎么做吗?

最佳答案

$ echo "ppp/jjj qqq/kkk rrr/lll" | sed -e 's/$/ /' -e 's!\([^/]*\)/\([^ ]*\) !\2/\1 !g'
jjj/ppp kkk/qqq lll/rrr 

关于regex - 使用 SED 交换 bash 中的列而不使用循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41304747/

相关文章:

bash - sed : delete all lines NOT containing string A or B, 从第二行开始

linux - sed - 将匹配传递给外部命令

ruby - 字符串匹配(正则表达式)与正则表达式匹配(字符串)

linux - .net core Linux 应用搞砸键盘输入

linux - 杀死目录中运行的进程(递归)

macos - 如何在 OSX 中使用 sed 将每个单词的首字母大写

regex - 在 BASH 中是否有一种方法可以移动匹配 "regexed wildcard"的文件?

php - 使用 preg_replace 命名反向引用

javascript - 数字和破折号的正则表达式

linux - Bash shell 提示我没有使用的无效选项...仅适用于 *.mp4 文件扩展名