在某些模式之前添加文本时使用带有忽略大小写的sed

时间:2013-06-04 12:18:00

标签: linux unix sed

sed -i '/first/i This line to be added' 

在这种情况下,如何在搜索pattern = first

时忽略大小写

6 个答案:

答案 0 :(得分:27)

您可以使用以下内容:

sed 's/[Ff][Ii][Rr][Ss][Tt]/last/g' file

否则,您有/I和n /i个标记:

sed 's/first/last/Ig' file

来自人sed

  

<强> I

     

<强> I

     

正则表达式匹配的I修饰符是GNU扩展名   以不区分大小写的方式使sed匹配regexp。

测试

$ cat file
first
FiRst
FIRST
fir3st
$ sed 's/[Ff][Ii][Rr][Ss][Tt]/last/g' file
last
last
last
fir3st
$ sed 's/first/last/Ig' file
last
last
last
fir3st

答案 1 :(得分:7)

GNU sed

sed '/first/Ii This line to be added' file

答案 2 :(得分:4)

你可以尝试

sed 's/first/somethingelse/gI'

答案 3 :(得分:3)

如果你想保存一些打字,请尝试awk。我不认为sed有这个选项

 awk -v IGNORECASE="1" '/first/{your logic}' file

答案 4 :(得分:1)

对于不了解>> df.groupby('groupkey').count() 特殊变量的awk版本,您可以使用以下内容:

IGNORECASE

在测试它是否与模式匹配之前将每行转换为大写,如果匹配,则打印字符串。 awk 'toupper($0) ~ /PATTERN/ { print "string to insert" } 1' file 是最短的 true 条件,因此awk执行默认操作:1

要使用变量,您可以使用:

{ print }

这会传递shell变量awk -v var="$foo" 'BEGIN { pattern = toupper(foo) } toupper($0) ~ pattern { print "string to insert" } 1' file 并在处理文件之前将其转换为大写。

使用bash稍微短一点就是使用$foo并跳过-v pattern="${foo^^}"阻止。

答案 5 :(得分:0)

使用以下\ b表示单词边界

var mysql = require('mysql');
var pool  = mysql.createPool({
  connectionLimit : 10,
  host            : 'example.org',
  user            : 'bob',
  password        : 'secret',
  database        : 'my_db'
});

pool.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});