2014-04-29 18 views
0

我想了解一個行代碼,但我卡住了。 誰能告訴我這是什麼意思?Sed和字符

grep "^1 " file0 | grep -v MODEL | sed 's/./&E/86' | sed 's/./& /8' | sed 's/./& /20' > file1 

謝謝!

回答

6
# Add "E" after the 86th character 
sed 's/./&E/86' 

# Add " " after the 8th character 
sed 's/./& /8' 

# Add " " after the 20th character 
sed 's/./& /20' 
+0

哪裏的86,8,20記載的行爲? –

+0

對於GNU sed,[here](https://www.gnu.org/software/sed/manual/sed.html#The-_0022s_0022-Command);對於POSIX sed,[here](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html) –

+0

答案在線上文檔([The's' Command](http:// www .gnu.org /軟件/ SED /手動/ sed.html#的-_0022s_0022-命令));它不在GNU手冊頁信息中。 'info sed'覆蓋了它:_NUMBER只替換REGEXP._的第NUMBER個匹配項,它在['sed']的POSIX規範中覆蓋(http://pubs.opengroup.org/onlinepubs/9699919799/utilities /sed.html)too。 –

5

相反sed之前使用多個grep管道,您可以將其全部合併成一個sed表達

sed '/^1 /{/MODEL/b;s/./&E/86;s/./& /8;s/./& /20}' file0 > file1