首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sed在tcsh前级循环中

sed在tcsh前级循环中
EN

Unix & Linux用户
提问于 2018-03-08 08:05:59
回答 1查看 584关注 0票数 1
代码语言:javascript
复制
> foreach i ( `cat /home/chandran/scratch_r/review/1810a042/list2test` )
foreach? sed -i "/^$i /s/$/ ASAN ASAN_CUI/" testify.list
foreach? end
Illegal variable name.
EN

回答 1

Unix & Linux用户

发布于 2018-03-08 08:13:06

代码语言:javascript
复制
> echo "$/"
Illegal variable name.
> echo '$/'
$/
> set i=blah
> echo "$i"'$/'
blah$/
> echo $i:q'$/'
blah$/

所以:

代码语言:javascript
复制
sed -i '/^'$i:q' /s/$/ ASAN ASAN_CUI/' testify.list

或者使用一个更干净/更好/更简单的语法(如zsh)的shell:

代码语言:javascript
复制
zsh% for i ($(< ~/scratch_r/review/1810a042/list2test))
for>   sed -i "/^$i /s/$/ ASAN ASAN_CUI/" testify.list

虽然这里不需要一遍又一遍地重写testify.list,但您可以一次性完成:

代码语言:javascript
复制
sed -i "$(
    sed 's|.*|/^& /s/$/ ASAN ASAN_CUI/|' ~/scratch_r/review/1810a042/list2test
  )" testify.list

或者也许:

代码语言:javascript
复制
perl -lapi -e 'BEGIN{while () {chomp; $w{$_}++}}
               $_ .= " ASAN ASAN_CUI" if $w{$F[0]}
              ' testify.list < ~/scratch_r/review/1810a042/list2test

(无测试)。

所有假设list2test每行包含一个单词,没有空白,没有/,没有通配符或正则表达式运算符.

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/428951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档