Sun*_*nny 2 shell scripting sed
我有一个大文件,每行显示:
OCCUPY 12 EVERY PIC 32(12)
OCCUPY 45 EVERY PIC X(21)
OCCUPY 98 EVERY PIC F(A0)
OCCUPY 21 EVERY PIC T(BC)
Run Code Online (Sandbox Code Playgroud)
所需的输出应为:
PIC 32(12) OCCUPY 12 EVERY
PIC X(21) OCCUPY 45 EVERY
PIC F(A0) OCCUPY 98 EVERY
Run Code Online (Sandbox Code Playgroud)
等等。
因此,这只是一个示例,但是文件中有很多行,在PIC附近有不同的字符/数字,在OCCUPY附近有不同的数字。
到目前为止,我尝试执行:
sed -E 's/(.*OCCUPY\ )(0([A-Z]\([0-9])\)(.*EVERY\ )(.*PIC\ )(([0-9]\([0-9]+\))/\3\4\1\2/'
Run Code Online (Sandbox Code Playgroud)
sed -E 's/((OCCUPY )([A-Z]\([0-9]))\)(.*EVERY )(.*PIC)(([0-9]\([0-9]))/\3\4\1\2/'
Run Code Online (Sandbox Code Playgroud)
但是,它没有帮助。
我将不胜感激任何帮助!
从样本来看,您的sed命令似乎太复杂了。那么这个简单的版本呢?
sed 's/\(.*\) \(PIC .*\)/\2 \1/'
Run Code Online (Sandbox Code Playgroud)
[更新]您的台词比帖子中所说的要复杂。他们就像:
MS-MSG OCCUPY 12 EVERY PIC 32(12) 0012345
Run Code Online (Sandbox Code Playgroud)
而你想要:
PIC 32(12) OCCUPY 12 EVERY
Run Code Online (Sandbox Code Playgroud)
然后,您所要做的就是将那些多余的字符添加到替换命令的左侧,但要放在括号之外(其内容用于构建新字符串):
sed 's/.* \(OCCUPY .*\) \(PIC [^ ]*\).*/\2 \1/'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |